2016-09-25 32 views
0

是否可以通过perl脚本将SIG STOP发送到进程ID,然后如果过了一段时间(比如说1分钟),可以发送SIG CONT到PID,除非“别人“已经将此SIG CONT发送给过程?sig在STOP中用Perl超时处理

谢谢。

回答

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: $!"; 

而不用担心第二个信号。

+0

嗨,不完全是,在60秒睡眠的中间,有人可以发送CONT信号,然后再次停止信号,因此将启动“第一次”睡眠并且睡眠时间少于60秒。我希望我很清楚。 @redneb – Mojo

+0

@Mojo你的要求很不明确。你必须给我们更多的细节。 – redneb