有没有办法停止和恢复C程序

时间:2011-05-06 07:03:35

标签: c

我正在用C做一个项目,因为我需要处理大量数据。有没有办法在30分钟后自动停止程序,然后在我再次运行程序时恢复?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分: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`

(非常简短,未经测试,你必须注意在你杀死进程时删除pid文件)。第一次运行它,它将开始执行(30秒),稍后它将只撤销你的程序。你可以改进它,例如通过检查进程列表中是否有程序进程,如果没有删除pid文件,以防它已经存在。因此,重启或终止流程后,它甚至会表现正确。

答案 2 :(得分:1)

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

如果您在UNIX上运行,那么我确信您可以设置一个cron作业,以便在需要时暂停/恢复该程序。在Windows下,你将无法获得这样的奢侈。