2011-05-06 96 views

回答

4

有没有自动方式来做到这一点。如果您使用的是Unix系统,则可以在程序运行时按下Ctrl + Z以发送STOP信号。它会等待,直到您再次发送一个CONT信号(最简单的方法是使用shell命令fg)。已停止的进程仍驻留在内存中,但未运行。

有更复杂的方法可以将正在运行的程序的“快照”保存到磁盘。稍后,您可以加载快照并继续执行该程序。例如,请参见CryoPID

1

简短的回答:没有付出一些努力让程序'自我休眠',没有。

如果你在UNIX上运行,那么我确信你可以设置一个cron作业来在需要时暂停/恢复程序。在Windows下,你不会享受到这样的奢侈。

2

你可以自动化它。正如已经提到的那样,Crtl-Z和fg只不过是信号。在Unix中,您可以使用kill命令发送它们。所以kill -19 $ PID会停止你的进程(当$ PID是它的PID时)并且kill -18会继续它。

你只需要编写一个包装脚本,看起来像:

#!/bin/sh 

PIDFILE=wherever/myprogram.pid 

if [ -e $PIDFILE ]; then 
    kill -18 `cat $PIDFILE` 
else 
    myprogram & 
    echo $! > $PIDFILE 
fi 

sleep 30 
kill -19 `cat $PIDFILE` 

(很短的,未经检验的,你要小心删除pidfile进程文件,当你杀的过程)。第一次运行它时,它会开始执行(30秒),稍后它将撤销你的程序。你可以改进它,例如通过在开始时检查进程列表中是否存在程序进程,以及是否已删除pid文件。所以它在重新启动或终止您的过程后甚至可以正确运行。

+0

而不是任意实现特定的数字,你应该使用'-STOP'和'-CONT' ... – 2011-05-06 10:58:52

相关问题