我正在学习系统编程系统调用。我的任务中有一个代码块(如下所示)。这个问题问我要打印多少个A、B或C。我的问题是if(pid == 0)是什么意思?我猜if(pid == 0)的意思是false,所以我分析2xA和2xB将被打印出来。我是在写还是?第二个问题是pid2 = fork()会再次执行main吗?
int main()
{
int pid,pid2;
int i;
pid = fork();
printf("A\n");
if (pid == 0)
pid2=fork();
if (pid2)
printf("B\n");
printf("C\n");
return 0;
}发布于 2012-04-16 03:46:24
fork系统调用是特殊的。你调用它一次,它返回两次。一次在子进程中,一次在父进程中。
在父进程中,它返回子进程的pid,在子进程中,它返回0。因此,if (pid == 0)的意思是“如果这是孩子”。
发布于 2012-04-16 03:46:21
fork将0返回子进程,将子进程的pid返回父进程。手册页应该会把其他的东西都弄清楚。
发布于 2012-04-16 03:49:12
Fork返回2个值:
子进程中的fork
在您的示例中,您创建了3个进程,并将输出2A、1B和3C
https://stackoverflow.com/questions/10165409
复制相似问题