[英]Fork() program in C
所以我试图解决我的书中有关C语言中fork系统调用的问题。
这是下面的代码:
#include <stdio.h>
#include <unistd.h>
int main() {
int i = 1;
if (fork ()) //parent process will return PID of child.
i++;
else if (fork()) //child process (becomes parent)
i--;
else //grandchild process returns 0
i++;
printf("%d\n", i);
}
看完代码后,我得到2 0 2作为解决方案。 我很困惑,因为我不知道哪个顺序正确? 子进程可以在父进程之前打印出来吗? 如果是这样,另一个可行的解决方案可能是0 2 2或2 20。我如何知道是否将执行所有条件语句? 我知道在第一个条件中, if
语句将被执行并将成为父进程(它将返回子进程的ID,i的值将增加到2)。 我怎么知道是否将执行else if
and else
代码? 抱歉,我只是糊涂了,试图绕过这个话题,因为这对我来说是一个新话题。
任何帮助将不胜感激。 先感谢您。
可以在父进程完成之前打印子进程。 请记住,在父进程中,对fork()
的调用返回一个非零数字,而在子进程中,它将返回0。
#include <stdio.h>
#include <unistd.h>
int main() {
int i = 1;
if (fork ())
i++;
else if (fork())
i--;
else
i++;
printf("%d\n", i);
}
对于上面的代码,父级将执行第一个if()语句,子级将执行else if语句,孙子级将执行else语句。 子/孙/父母可以以任何顺序打印。 因此,2 0 2,2 2 0和0 2 2都是可行的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.