perl - 当后台进程在 Perl 中终止时,如何通知我?

标签 perl fork

我写了一个 Perl 程序,它在子进程中 fork 并调用一个后台程序,并有一个无限的 while 循环,它在父进程中做一些事情。现在while循环应该在子进程中的后台程序终止时离开:

$pid = fork();
if ( !$pid ) {
    exec( "program args" );
} else {
    while ( 1 ) {
        # do something

        # needs help: if program terminated, break
    }
}

最佳答案

好吧,fork 为您的父进程提供子进程的 PID(您尽职尽责地在代码中检索)。这正是 parent 可以照顾 child 的原因。

要在循环终止时离开循环,您可以使用kill 0 $pid 来检查 child 是否仍然存在。请参阅 perldoc -f kill

关于perl - 当后台进程在 Perl 中终止时,如何通知我?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191364/

相关文章:

regex - 如何将所有文件重命名为小写(已解决)并同时将空格重命名为下划线

使用 foreach 创建 Perl CGI 表

c - 子进程执行某些系统命令的结果无法通过管道发送到父进程

c - 有没有办法在不等待的情况下捕获进程的返回状态?

c - 进程 ID 和 fork()

linux - 我如何用 fork 创建下面的树?

arrays - 使用 perl array_diff 实用程序比较 2 个数组之间的差异

python - 依次运行多个命令行 linux python

perl - 如何使用 cpanm 更新 perl 模块

java - Pyramid 、 fork 、Java 和套接字