这是我的代码。请看一看。你能解释一下流程吗?这实际上是一个过去的纸质问题。但是,我坦率地不理解fork系统调用的概念。
main()
{
int i = 1;
int ret_val= 0;
while(i <= 5)
{
fork();
if(ret_val == 0) /*child code*/
{
printf("in child %d. \n", i);
exit(0);
}
else
{ /*parent code*/
i = i+1;
}
}
}
答案 0 :(得分:2)
首先,在程序的核心图像中,您初始化两个值ret_val
和i
,它们充当计数器。
从那里开始5次,你fork()
程序,创建另一个具有相同图像(代码)的进程。此时我假设您的代码是错误的,因为您使用ret_val
变量来检查它是否是子进程或父进程,但是为此,您需要为其分配值{ {1}}像这样:
fork()
从本质上讲,您的代码5次会增加ret_val = fork();
if (ret_val == 0)
// do something as child
else
// parent code here
的值,并让每个子进程显示i
的当前值。