sig STOP在Perl中处理超时

时间:2016-09-25 13:19:22

标签: perl

是否可以通过perl脚本向进程ID发送SIG STOP,然后,如果超过一段时间,让1分钟,将SIG CONT发送到PID,除非"其他人"已经将此SIG CONT发送给流程了吗?

感谢。

1 个答案:

答案 0 :(得分:2)

进程可以使用waitpid系统调用(带有WUNTRACED / WCONTINUED标志)来监视子进程何时停止/恢复。仅当受监视的进程是原始进程的子进程时,此方法才有效。但无论是否是孩子,您始终可以将信号SIGSTOP / SIGCONT发送到其他进程(前提是它们由同一用户拥有)。如果某个进程因为收到SIGCONT而已恢复运行,则发送第二个SIGCONT完全无害。所以你可以做到

kill 'STOP',$pid or die "cannot send STOP signal: $!";
sleep 60;
kill 'CONT',$pid or die "cannot send CONT signal: $!";

并且不用担心第二个信号。