c - parent 应该收到有关孙子工作完成的信息

标签 c process operating-system fork real-time

标题说明了一切。我正在学习操作系统,我想用 C 编程语言编写代码, parent 应该收到有关孙子工作完成的信息。我如何使用 forkwait 来做到这一点?

该代码将有关子工作完成的信息返回给父级。我想对孙子做同样的事情。

这是我到目前为止尝试过的:

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

执行此操作的方法如下:

  1. t1 创建子进程 t2
  2. t1等待子进程t2退出状态

现在,父进程 t1 被阻塞并等待子进程 t2 完成。

  1. 让子进程 t2 创建自己的子进程 t3
  2. t2 等待子进程 t3

现在 t3 运行、完成并将退出状态返回给父级 t2t2 将运行并将该状态返回给其父 t1。通过这种方式,您可以将 t3 的退出状态一直传播到 t1

关于c - parent 应该收到有关孙子工作完成的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44236039/

相关文章:

c - 为 Windows 编写自己的备忘录

c - 如何监视在 linux 中运行的两个服务,并在一个崩溃后重新启动它们

在 linux 中创建一个守护进程

c - 杀死父进程的所有子进程但让父进程保持事件状态

python - 使用 Python os 模块获取 unix 文件类型

operating-system - 小牛 macports 安装过时

python - 恢复用python删除的文件

java - JNI 维数组 : passing 2D array from java to c

c - 意外标记附近的语法错误 `('

Python:从 multiprocessing.Process 获取回溯