我发现了一个奇怪的场景,如果我开始一个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