我發現了一個奇怪的場景,如果我開始一個Java程序,我想用CTRL +ç優雅退出它不工作/響應,我不得不做一個CTRL + z關於該程序,這不是很酷,做一個ps列出過程...任何人都請。CTRL-C不能在Java程序工作
0
A
回答
3
在Unix下,命令行程序對您嘗試使用^C
中斷它們時發生的情況有很大的控制權。在終端鍵入^C
的默認效果是使內核將SIGINT
信號發送到前臺進程組,並且SIGINT
的默認行爲是終止它發送到的進程,但這兩件事都可以更改。
問題的最可能的原因是您的Java程序攔截SIGINT
爲了在退出之前做一些清理,但信號處理程序有問題,所以該進程並沒有真正退出。第二個最可能的原因是程序是,完全忽略了SIGINT
。最不可能的原因是它將終端置於「原始模式」,因此^C
只是向其標準輸入傳送一個值爲0x03的字節(如果它已經完成^Z
可能也不會起作用)。
如果您有權訪問程序的源代碼,您可以嘗試修復有問題的信號處理程序和/或使其停止忽略信號。否則,你有點兒小溪。您可以嘗試使用^\
(控制反斜槓),它會發送一個不同的正常致命信號(SIGQUIT
),但這並不保證可以正常工作,如果確實有效,它可能會讓您產生巨大的「核心轉儲」文件擺脫。
擺脫故障過程的唯一方法是發送信號9(SIGKILL
)。與其他致命信號不同,不可能攔截,阻止或忽略該信號。沒有控制鍵發送信號9;您必須暫停^Z
的過程,或者打開新的終端窗口/ ssh會話,使用ps
找到進程ID,並使用kill
命令。在kill -9 PID
之前總是嘗試kill PID
。
相關問題
- 1. Java程序在Eclipse中工作,但不能作爲Jar文件
- 2. 線程不能在java中工作android
- 3. Java小程序不工作在IE8
- 4. 小程序不能在Chrome上工作
- 5. 程序不能在mysql中工作
- 6. Java Web應用程序不能在Windows 7上工作
- 7. 簡單的「Hello World」Java程序不能在Eclipse中工作
- 8. INSERT stsement不能在java程序中工作
- 9. StringTokenizer似乎不能在我的程序中工作 - Java
- 10. java小程序不能在HTML中工作
- 11. Java多線程不能正常工作
- 12. 不能在Eclipse JAVA程序
- 13. 應用程序在Java 6上工作,但不在Java 7
- 14. Java程序遞歸不工作
- 15. Java程序混雜不工作
- 16. Java'導入'實用程序不工作
- 17. Java程序:返回語句不工作
- 18. 我的Java程序不工作
- 19. Eclipse程序參數不工作(Java)?
- 20. 基本java程序不能正常工作
- 21. 簡單的java HttpClient程序不能正常工作
- 22. 從java程序執行cat命令不能按預期工作
- 23. Java應用程序不能與java9和eclipse一起工作
- 24. Java比賽小程序不能正常工作
- 25. Java軍事時間程序不能正常工作
- 26. Jsp + Java應用程序執行不能正常工作'
- 27. Java:不能讓readline()工作
- 28. Java不能讓TempListener工作
- 29. java不能從cmd工作
- 30. Knockoutjs程序不能正常工作
你能發表一些代碼嗎? – 2010-08-24 21:20:29