家长应该收到有关孙子工作完成情况的信息

时间:2017-05-29 06:39:37

标签: c process operating-system fork real-time

标题说明了一切。我正在学习操作系统,我想用C编程语言编写一个代码,Parent应该接收有关完成孙子工作的信息。如何使用 fork 等待 来实现这一目标?

代码向父母返回有关子工作完成的信息。我想和孙子做同样的事。

这是我迄今为止所尝试过的:

int main( int argc, char * argv[] ){
   pid_t child, rv; 
   int st;      
   child = fork();
   if( child == 0 ){
      sleep(5);
      return 5;
   }    
   printf( "Child PID = %ld\n", (long)child );  
   rv = wait( &st );    
   printf( "wait() = %ld\nst = %x\n", (long)rv, st );   
   printf( "Child exit code = %d\n", WEXITSTATUS(st) );
   return 0;

}

1 个答案:

答案 0 :(得分:2)

让我们按照以下步骤调用我们的流程:

t1 - Parent process
t2 - Child process
t3 - Grandchild process

执行此操作的方法如下:

  1. t1创建子进程t2
  2. t1等待子进程t2退出状态
  3. 现在,父{4}}进程被阻止并等待子进程t1完成。

    1. 让子流程t2创建自己的子流程t2
    2. t3等待子进程t2
    3. 现在t3运行,完成并将退出状态返回到父t3t2将运行并将该状态返回到其父t2。这样,您将t1的退出状态一直传播到t3