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

use*_*348 1 perl sleep manual

我想知道是否有可能手动唤醒已进入睡眠状态的perl脚本.基本上我设置我的脚本在执行某事后一小时睡觉,10分钟后我意识到我希望它再次运行.

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

再次,谢谢你的帮助

mob*_*mob 5

在许多系统上,系统调用sleep可能会被信号中断.在这样的中断,sleep将返回它实际睡觉和设置的秒数$!.当然,您必须使用一个允许脚本继续运行的信号.如果你还没有设定任何特定的信号处理程序的组合SIGSTOP,并SIGCONT会做的伎俩了.

例:

$ 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 ...
Run Code Online (Sandbox Code Playgroud)

另一个例子(琐碎的SIGUSR1处理程序):

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