[英]C: fork() child processes
根据我正在阅读的教科书,下面的代码创建N个子进程,这些进程将以唯一状态退出。
/* Parent creates N children */
for (i = 0; i < N; i++)
if ((pid[i] = Fork()) == 0) /* Child */
exit(100+i);
在教科书的早些时候,它声明以下代码将有8行输出:
int main(){
Fork();
Fork();
Fork();
printf("hello\n");
exit(0);
}
这让我相信有2 ^ n个子进程,其中n是fork()被调用的次数。 原因是第一个代码只生成N个子进程(而不是2 ^ N),因为子进程每次都退出,所以在调用后续的fork()时,它只在父进程上运行?
每次成功调用fork()
都会创建一个新进程。
在第一个例子中,子进程( fork()
的返回值为0
)调用exit();
,这意味着他们不会调用下一个fork()
。
在第二个示例中,每个子进程都继续分叉。
调用fork()时,它会复制父数据并从该点开始单独执行。 因此,父或子的执行取决于进程的调度。 无论是孩子还是父母,无论哪个进程获得cpu时间都将被执行。 我们必须注意哪个代码应该由哪个进程(子进程或进程)运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.