我正在做一個C項目,我需要處理大量的數據。有沒有辦法在30分鐘後自動停止程序,然後在我再次運行程序時恢復?有沒有辦法停止和恢復C程序
2
A
回答
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文件。所以它在重新啓動或終止您的過程後甚至可以正確運行。
相關問題
- 1. 有沒有辦法暫停/恢復SwingWorker
- 2. 有沒有辦法恢復wordpress更新?
- 3. 有沒有辦法恢復SharePoint
- 4. 有沒有辦法恢復VS2010設置?
- 5. 有沒有辦法停止QGraphicsScene?
- 6. 有沒有辦法停止OnItemSaving事件?
- 7. 有沒有辦法防止重複?
- 8. 有沒有辦法阻止捕獲停止我的Java應用程序?
- 9. 有沒有辦法以編程方式停止web.py?
- 10. 有沒有辦法用python啓動/停止linux進程?
- 11. 有沒有辦法停止magento索引器進程?
- 12. 有沒有辦法多次啓動和停止SwingWorker ..?
- 13. iphone - 停止和恢復方法
- 14. 停止和恢復優化
- 15. 線程的Runnable - 停止和恢復
- 16. 有沒有辦法停止應用程序通知,而無需iPhone設置?
- 17. 有沒有辦法從wayback機器恢復整個網站?
- 18. 有沒有辦法在Debian中恢復默認文件權限?
- 19. 有沒有辦法在顛覆提交中自動恢復?
- 20. 有沒有辦法將索引恢復到以前的版本?
- 21. 有沒有辦法在無效的Char值上恢復iterparse?
- 22. 有沒有辦法在visual studio 2005中恢復變更集2005
- 23. 有沒有辦法從BehaviorSubject的錯誤中恢復?
- 24. 有沒有辦法設置HTML5拖動效果? (即不恢復)
- 25. 有沒有辦法恢復絕對佈局庫的內容?
- 26. 做'rmelem'後有沒有辦法恢復元素?
- 27. 有沒有辦法按時間表恢復MySQL數據庫
- 28. 當暫停和恢復線程時沒有更新UI
- 29. 有沒有辦法從python編譯c/C++程序?
- 30. 有沒有辦法阻止基於ncurses的程序運行?
而不是任意實現特定的數字,你應該使用'-STOP'和'-CONT' ... – 2011-05-06 10:58:52