标题说明了一切。我正在学习操作系统,我想用 C 编程语言编写代码, parent 应该收到有关孙子工作完成的信息。我如何使用 fork 和 wait 来做到这一点?
该代码将有关子工作完成的信息返回给父级。我想对孙子做同样的事情。
这是我到目前为止尝试过的:
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;
}
最佳答案
让我们调用我们的流程如下:
t1 - Parent process
t2 - Child process
t3 - Grandchild process
执行此操作的方法如下:
t1
创建子进程t2
t1
等待子进程t2
退出状态
现在,父进程 t1
被阻塞并等待子进程 t2
完成。
- 让子进程
t2
创建自己的子进程t3
。 t2
等待子进程t3
。
现在 t3
运行、完成并将退出状态返回给父级 t2
。 t2
将运行并将该状态返回给其父 t1
。通过这种方式,您可以将 t3
的退出状态一直传播到 t1
。
关于c - parent 应该收到有关孙子工作完成的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44236039/