如何在后台继续执行 Perl 脚本?

How to continue Perl script execution in background?

我有一个脚本,我想在其中添加一个 "auto" 模式 一些处理,生成一些输出,然后进入后台 本身。

我怎样才能安全地做到这一点?将一个简单的 fork 并退出 parent 这样做,还是会产生僵尸(孤儿)问题?

# initial processing
defined (my $pid fork) or die "Can't fork: $!";
exit if $pid;
# continue child in background

孤儿,即父进程不再存在的进程,通常由 init 进程自动回收。僵尸是另一回事:父进程存在但不关心子进程 wait ,因此即使进程死了也没有完全收割。在您的情况下,这将是孤儿,因此无需担心这部分。

如果您从 shell 执行进程,您可能仍然需要担心与父进程的共享文件描述符等问题。我建议您还关闭所有文件描述符,尤其是 stdin、stderr 和 stdout。