这是我的代码。请看一看。您能解释一下工艺流程吗?这实际上是一个过去的纸质问题。但是,坦率地说,我不理解 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;
}
}
}
最佳答案
首先,在程序的核心镜像中,初始化两个值:ret_val
和充当计数器的 i
。
从那时起,您fork()
程序 5 次,使用相同的图像(代码)创建另一个进程。此时,我假设您的代码是错误的,因为您正在使用 ret_val 变量来检查它是子进程还是父进程,但为此,您需要为其分配来自 的值>fork()
像这样:
ret_val = fork();
if (ret_val == 0)
// do something as child
else
// parent code here
本质上,您的代码会递增 i
的值 5 次,并让每个子进程显示 i
的当前值。
关于c - fork() 示例程序。需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31102707/