關於如何捕獲關閉我的程序正在運行的終端窗口的任何想法? 雖然我在這裏,任何方式來捕獲當計算機關閉,但程序仍在運行,或者如果用戶註銷?C如何捕獲關閉終端
回答
嘗試捕捉SIGTERM。請注意,您無法捕獲SIGKILL,這可能是一段時間後關機期間發生的情況。我發現這個really nice post也解釋了一些差異。
[更新]在這裏的長處,但測試如果std-in/out仍然是開放和良好的呢?當終端死掉時,應該放棄這些文件描述符。免責聲明,這是最好的猜測。
就像我說的,我試着測試捕獲所有的各種信號。 SIGTERM我geuss會爲Shutdown工作,還沒有測試過,但它肯定不會結束終端...任何想法? – user657178 2011-06-02 13:17:51
也許你的程序在控制檯沒有被真正殺死的時候。你應該能夠驗證,但無論哪種方式嘗試測試標準輸入/標準輸出,看他們是否仍然「活着」。這是我得到的最好的。 – 2011-06-05 23:07:15
如果在Unix/Linux上:你看看SIGTERM嗎?這至少是關機期間發送給您的。
SIGTERM可能會用於關機,我還沒有測試......但它絕對不能用於關閉終端,這對我來說現在更重要......任何想法? – user657178 2011-06-02 13:18:48
你可以試試atexit()函數嗎?(見註釋)
或者看看這個帖子在這裏:Signals received by bash when terminal is closed
atexit僅用於正常的程序終止,它被定義爲「通過調用exit()或從main()返回」 – 2011-06-01 21:42:03
我的不好,你是完全正確的。 – Gui13 2011-06-01 21:45:23
從我的測試......,關閉終端時,我的程序接收到信號是1或SIGHUP
說SIGTERM錯誤的答案。 SIGHUP是終端關閉時發送的信號。 – 2016-04-26 12:34:04
- 1. 如何關閉geany終端
- 2. 終端中的錯誤:捕獲標記從未關閉
- 3. 捕獲Windows終端關閉正在運行的進程
- 4. 終端關閉開
- 5. python - 如何避免關閉終端
- 6. 如何關閉終端中的回聲?
- 7. 如何捕獲XMLHttpRequest的所有終端
- 8. Linux終端:如何捕獲或觀看其他終端會話
- 9. 關閉終端文件
- 10. 如何關閉程序中的gnome終端屏幕C
- 11. 如何捕獲NSSharingService關閉事件
- 12. 如何捕獲datePicker關閉事件
- 13. 捕獲OS X關閉
- 14. 捕獲tabpage關閉事件
- 15. exo-open在終端腳本 - 程序關閉終端
- 16. 如何防止關閉終端後關閉Spring MVC應用程序?
- 17. 監聽終端會話「關閉」事件
- 18. anaconda和conda終端立即關閉
- 19. 在mac中關閉終端回聲?
- 20. 終端打開,然後立即關閉
- 21. 怎麼看從以前關閉終端
- 22. 使用python終端關閉程序
- 23. ssh x轉發和關閉終端
- 24. 關閉ssh終端後模板丟失
- 25. 從終端捕獲System.in事件
- 26. Bash腳本捕獲輸出到終端
- 27. 捕獲終端消息/會話文本
- 28. 使用c關閉端口#
- 29. C#Com端口關閉
- 30. [Golang]客戶端rabbitMQ意外關閉TCP連接,如何捕獲或修復它?
哪些操作系統? – 2011-06-01 21:37:30
如果電源立即切斷,該怎麼辦?是否需要立即清理,還是有可能在下一次開始清理時清理? – 2011-06-01 21:40:31
@Neil:Linux,@Roland電源切斷可以看作是一種特殊情況,所以我不能處理那個 – user657178 2011-06-02 13:16:41