#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
int i = 3;
int pid;
while(i > 0) {
pid = fork();
if(pid > 0) {
exit(0);
} else {
i--;
}
}
}
在该程序上创建了多少个进程?我仍然对fork()系统调用感到困惑,有人可以帮我解释一下吗?
答案 0 :(得分:1)
fork()
做什么? fork()
是一个有趣的电话。您可以将其视为将程序状态克隆为两个完全相同的副本 - 它们之间的唯一区别将是fork()
的返回值。执行fork()
的流程会收到新流程的流程ID(pid),而新流程会收到0
。
考虑到这一点:
每次fork时,都会创建一个新进程并退出父进程。这样做三次,因此 - 通过分叉创建三个进程。当然,这不包括您通过启动流程启动的那个。 :)
答案 1 :(得分:0)
所以,完全 - 4个过程,3个由程序创建,1个由系统