作者:Ly丶爱着那一个人_686 | 来源:互联网 | 2017-08-04 14:25
fork,是分叉的意思。也就是说,它会起到一个“分叉”的作用。在Unix操作系统中,常常会用它来产生新的进程。那调用fork到底会发生什么呢?首先,父进程会和子进程共用一段代码段,而数据段和堆栈段则会由父进程复制copy一份给子进程。当产生完毕,实际上父进程和子进程已经是两个独立的进程,特别是数据段是分开的(虽然一开始是一样的,但经过各自的操作后,是可以变得不同的),并不共享数据。
如果fork成功,子进程中fork的返回值是0,父进程中fork的返回值是子进程的进程号,如果fork不成功,父进程会返回错误。在这段程序代码,我们也许会产生误解。看到if-else结构,我们会以为这里分成3段,pid<0、pid==0和pid>0,当满足某一个条件时就会实现某一段程序。但实际并非如此。
我们可以这样认为,如果没有wait函数,父进程和子进程是并行运行的,而且步调一致(至于真正谁运行先,就要看具体的操作系统)。在fork之后,它们进行不同的工作。而返回的pid,只是用来区分是父进程而是子进程。