gpt4 book ai didi

c - 确保父进程在子进程之前终止

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:30 26 4
gpt4 key购买 nike

如果我在 fork 之后在 child 中使用以下行:

while( getppid() != 1 )

确保父进程在子进程之前终止(因为当父进程终止时,子进程的父进程成为 init 进程)那么我可能会遇到什么问题(如果有的话)?

这是确保子进程在父进程之后终止的好方法吗?

还有什么办法呢?

最佳答案

自旋循环从来都不是一件好事。在叉之前打开管道。让 child 阻止阅读。当 parent 终止时,管道将关闭, child 将继续。 (确保 child 关闭管道的写入端!)

例如:(警告:所有错误检查被忽略)

int
main( void ) {
int fd[ 2 ];
pipe( fd );
if( fork() ) {
sleep( 2 );
puts( "parent awakes" );
} else {
char k;
close( fd[ 1 ]);
read( fd[ 0 ], &k, 1 );
puts( "child continues" );
}
return 0;
}

另请注意,子进程应该在完成后关闭管道的读取端,但我已将其排除在示例代码之外,因为它与等待父进程终止的问题无关。

关于c - 确保父进程在子进程之前终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14687839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com