一、fork()
1、fork()调用一次返回两次
返回值:成功(父进程:返回子进程的PID,子进程:返回0);
失败(父进程返回-1)
fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid,但却复制父进程其它所有的资源。例如,要是父进程打开了五个文件,那么子进程也有五个打开的文件,而且这些文件的当前读写指针也停在相同的地方。这样得到的子进程独立于父进程, 具有良好的并发性,但是二者之间的通讯需要通过专门的通讯机制,如:pipe,共享内存等机制, 另外通过fork创建子进程,需要将上面描述的每种资源都复制一个副本。
fork返回后,子进程和父进程都从调用fork函数的下一条语句开始执行。
父子进程不共享一段地址空间,修改子进程,父进程的内容并不会受影响。
fork是一个开销十分大的系统调用,这些开销