我有一个脚本,我想在其中添加一个“自动”模式 一些处理,生成一些输出,然后在后台输入 本身。
如何安全地实现这一目标?是一个简单的fork并退出父级 这样做,还是会产生僵尸(孤儿)问题?
# initial processing
defined (my $pid fork) or die "Can't fork: $!";
exit if $pid;
# continue child in background
答案 0 :(得分:2)
孤儿,即父母不再在那里的进程,通常由init进程自动获得。僵尸是一个不同的东西:父进程存在,但不关心wait
对于孩子,因此即使它已经死了也没有完全收获。在你的情况下,这将是孤儿,所以不必担心这一部分。
如果您从shell执行过程,您可能仍需要担心与父级父级共享文件描述符等。我建议您也关闭所有文件描述符,尤其是stdin,stderr和stdout。