fork()示例程序。需要解释

时间:2015-06-28 17:34:44

标签: c fork system-calls

这是我的代码。请看一看。你能解释一下流程吗?这实际上是一个过去的纸质问题。但是,我坦率地不理解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;
      }
   }
}

1 个答案:

答案 0 :(得分:2)

首先,在程序的核心图像中,您初始化两个值ret_vali,它们充当计数器。

从那里开始5次,你fork()程序,创建另一个具有相同图像(代码)的进程。此时我假设您的代码是错误的,因为您使用ret_val变量来检查它是否是子进程或父进程,但是为此,您需要为其分配值{ {1}}像这样:

fork()

从本质上讲,您的代码5次会增加ret_val = fork(); if (ret_val == 0) // do something as child else // parent code here 的值,并让每个子进程显示i的当前值。