Linux思考题51. fork()和clone()二者之间的区别是什么?答:fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid,但却复制父进程其它所有的资源。通过fork创建子进程,需要将上面描述的每种资源都复制一个副本。fork()调用执行一次返回两个值,对于父进程,fork函数返回子程序的进程号,而对于子程序,fork函数则返回零,这就是一个函数返回两次的本质。在fork之后,子进程和父进程都会继续执行fork调用之后的指令。系统调用fork()和vfork()是无参数的,而clone()则带有参数。fork()是全部复制,vfork()是共享内存,而clone()是则可以将父进程资源有选择地复制给子进程,而没有复制的数据结构则通过指针的复制让子进程共享,具体要复制哪些资源给子进程,由参数列表中的clone_flags来决定。另外,clone()返回的是子进程的pid。2. 什么是进程?什么是线程?Linux系统中的进程有那些状态?如何获取系统中各进程的状态?答:进程是指在系统中正在运行的一个