标题说明了一切。我正在学习操作系统,我想用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;
}
答案 0 :(得分:2)
让我们按照以下步骤调用我们的流程:
t1 - Parent process
t2 - Child process
t3 - Grandchild process
执行此操作的方法如下:
t1
创建子进程t2
t1
等待子进程t2
退出状态现在,父{4}}进程被阻止并等待子进程t1
完成。
t2
创建自己的子流程t2
。t3
等待子进程t2
。现在t3
运行,完成并将退出状态返回到父t3
。 t2
将运行并将该状态返回到其父t2
。这样,您将t1
的退出状态一直传播到t3
。