如何手动唤醒perl睡眠功能?

时间:2012-08-10 23:26:59

标签: perl sleep manual

我想知道是否可以手动唤醒已进入睡眠状态的perl脚本。 基本上我会在执行某些操作后将脚本设置为睡眠一小时,10分钟后我意识到我希望它再次运行。

我正在运行的平台是linux,带有tcsh shell。

再次,感谢您的帮助

1 个答案:

答案 0 :(得分:5)

在许多系统上,sleep等系统调用可能会被信号中断。在这种中断时,sleep将返回它实际睡眠的秒数并设置$!。当然,您必须使用一个允许脚本继续运行的信号。如果您尚未设置任何特定的信号处理程序,SIGSTOPSIGCONT的组合也可以完成。

示例:

$ perl -e 'print "slept for ", sleep 1000, " seconds.\n";' &
[2] 6220
$ kill -STOP 6220
$ kill -CONT 6220
slept for 8 seconds[2]+  Stopped     perl -e ...

另一个例子(普通的SIGUSR1处理程序):

$ perl -e '$SIG{USR1}=sub{}; print "slept for ", sleep 1000, "s.\n"' &
[1] 2419
$ kill -USR1 2419
slept for 4s