如何在后台继续执行 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。
我有一个脚本,我想在其中添加一个 "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。