我正在做一個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. 有沒有辦法在Android中暫停和恢復Animation或AnimationSet?
- 3. 有沒有辦法恢復到Neo4j 2.0.0
- 4. 有沒有辦法恢復SharePoint
- 5. 有沒有辦法恢復wordpress更新?
- 6. 有沒有辦法恢復VS2010設置?
- 7. 有沒有辦法停止OnItemSaving事件?
- 8. 有沒有辦法來防止:懸停?
- 9. 有沒有辦法停止MouseListener?
- 10. 有沒有辦法停止QGraphicsScene?
- 11. 有沒有辦法防止重複?
- 12. 有沒有辦法阻止捕獲停止我的Java應用程序?
- 13. 有沒有辦法無意中停止Executor的線程?
- 14. 有沒有辦法停止magento索引器進程?
- 15. 有沒有辦法以編程方式停止web.py?
- 16. 有沒有辦法用python啓動/停止linux進程?
- 17. 有沒有辦法立即停止線程?
- 18. 有沒有辦法停止couchdb索引器進程?
- 19. 有沒有辦法多次啓動和停止SwingWorker ..?
- 20. 有沒有辦法暫停maven多模塊構建並稍後恢復?
- 21. iphone - 停止和恢復方法
- 22. 停止和恢復優化
- 23. 線程的Runnable - 停止和恢復
- 24. 有沒有辦法停止應用程序通知,而無需iPhone設置?
- 25. 有沒有辦法停止所有RestKit處理?
- 26. 如何使用線程池,暫停,播放,恢復和停止所有線程?
- 27. 有沒有辦法在程序期間暫停OS調度?
- 28. 有沒有辦法恢復絕對佈局庫的內容?
- 29. 有沒有辦法在iOS恢復中引用ALAsset?
- 30. 有沒有辦法在顛覆提交中自動恢復?
而不是任意實現特定的數字,你應該使用'-STOP'和'-CONT' ... – 2011-05-06 10:58:52