fork() 示例程序。需要解释
fork() example program. need explanation
这是我的代码。请看一看。你能解释一下流程吗?这实际上是一个过去的纸质问题。但是,老实说我不明白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
的当前值。
这是我的代码。请看一看。你能解释一下流程吗?这实际上是一个过去的纸质问题。但是,老实说我不明白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
的当前值。