3
A
回答
-2
你試過:
System.out.print((char)3);
7
在Perl中,我們可以這樣做:[...]
真的嗎?你有沒有試過它終止任何程序?
這個例子
#!/usr/bin/perl
print "\x03";
print "\n";
print "Hello World!\n";
將打印
<funny character>
Hello World!
輸出管道傳輸到其他程序也不會終止任何人。
您想發送^ C 信號。但你真的只是發送0x03 字節。如果你想終止一個你不得不使用這樣的事情(OS dependend):
kill(process_id_of_destination, SIGTERM);
混亂的根源是,在一個正常的終端窗口中OS截獲^ C鍵和翻譯它輸入TERM
信號。但是程序不會在它的輸入流上接收到^ C,它會收到信號並且可能會在一些註冊的鉤子中處理它。所以,如果你自己寫^ C,它只是簡單的數據,不會被專門處理。
附錄
下面的文本只適用於Unixoids/Linux的,但很可能沒有到Windows。我認爲沒關係,因爲telnet
,perl
,tail -f
表示Unix背景。
如前所述:將^ C(又名字節0x03)發送到進程的標準輸入不會觸發任何信號。通常。但終端窗口本身和其他一些程序,如rlogin,telnet,sshd必須假裝,然後運行的東西直接連接到終端。這包括將一些關鍵組合轉換成一些信號。這是使用「僞終端」(aka。pty或pts)完成的。關於這個東西查找的詳細信息man 4 pts
和man 7 pty
和/或閱讀理查德史蒂文斯Unix的書。 您的情況摘錄如下:寫入「master PTY」的數據將完全像鍵盤輸入一樣處理。因此寫入主文件中的^ C將被翻譯成傳遞給讀取「slave PTY」的過程的信號。因此,如果Perl中的print("\x03");
工作,並且Java版本System.out.println('\3');
不支持,那麼我認爲Perl以某種方式設置不同,並寫入PTY主站,而Java僅寫入普通管道。
相關問題
- 1. C /按ctrl + c幾次提高信號?
- 2. 嘗試通過POPEN發送使用Python的EOF信號(按Ctrl + d)信號()
- 3. C#信號數據通信
- 4. C#和Java之間的通信:過程
- 5. 通過的getchar吃掉按Ctrl-C()
- 6. Ctrl C通過Linux中的OutputStreamWriter
- 7. 的Java createText不按Ctrl C,Ctrl鍵V
- 8. 發送CTRL-C通過網絡
- 9. PyQt:qthread通過信號中斷
- 10. Python腳本無法通過按Ctrl + C或Ctrl終止+ BREAK
- 11. 通過C與iDevice通信?
- 12. 如何處理mini-shell中的Ctrl + Z信號。 C
- 13. 通過Java套接字的InterServer通信
- 14. 通過套接字的Java TCP通信
- 15. 通過C/C++進行RDP通信
- 16. BASH:發送SIGTSTP信號(ctrl + z)
- 17. 通信模型:C++和Java
- 18. C++和Java對象通信
- 19. 除了Ctrl-C,我還能捕捉到什麼鍵盤信號?
- 20. 通過api的語音信箱號碼
- 21. pyqt通過類之間的信號
- 22. 通過https的信用卡號碼
- 23. 如何通過到達的順序處理多個信號C
- 24. 通過golang捕獲ctrl + c或任何其他進程在windows和linux中終止信號
- 25. 在Java中捕獲Ctrl + C
- 26. 通過消息隊列進行Java和C#通信
- 27. 在Windows上通過管道進行Java/C++通信
- 28. java客戶端通過TCP連接與C++服務器通信
- 29. 如何通過STD_LOGIC_VECTOR信號將STD_LOGIC信號傳遞給實體?
- 30. C:信號處理和信號燈
轉寄此** [http://stackoverflow.com/questions/1216172/java-how-could-i-intercept-ctrlc-in-a-cli-application](http://stackoverflow.com/questions/1216172/java的如何-可能-I-截距-CTRLC-IN-A-CLI應用程序)**和** [http://stackoverflow.com/questions/1611931/catching-ctrlc-in-java]( http://stackoverflow.com/questions/1611931/catching-ctrlc-in-java)** – 2012-02-25 07:51:25
如果另一端是telnet會話,你爲什麼不乾脆關閉會話? – tripleee 2012-02-25 10:33:16
因爲我需要進一步使用連接。斷開並重新連接不起作用。 – rv1822 2012-02-25 11:16:51