首先,我不知道這是留在SO還是去SU:你告訴我。解決方案可能與編程有關。爲什麼在Linux上使用RS-232時CTRL + C不起作用?
我在嵌入式設備上執行Linux並使用RS-232 @ 9600 bauds與它進行通信。在Windows上使用PuTTY可以正常工作:我有一個shell,可以輸入和執行命令。
問題是:當我啓動一個命令時,我無法按CTRL + C。例如,ping某臺機器時,ping進入無限循環,並且我無法使用CTRL + C停止它。然而,在Bash提示符下,CTRL + C工作並進入下一行(因此它被傳送)。我還注意到,當我在運行命令時執行CTRL + C時,終端顯示^C
。通過Telnet連接時,CTRL + C可以在任何地方正常工作。
我試過使用PuTTY的「特殊命令」休息,但它不起作用。我也嘗試了不同的終端模擬器,同樣的問題。
所以我想這個問題是以某種方式與內核相關的。有什麼我可以看看關於這個?
編輯:我正在運行BusyBox v1.13.2。的stty -a
(RS-232)的輸出是:
speed 9600 baud; rows 24; columns 80;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
的stty -a
(遠程登錄)的輸出是:
speed 38400 baud; rows 24; columns 80;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab3 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
我只注意到,如果我做ls -la /bin
,這是一個很長的命令執行由於名單很長,我不能通過發出CTRL + C來破解,但我可以在保留鍵的時候進行。大約一秒後就會中斷。然而,這不適用於ping。
事實上,如果我做seq 1 1000
,然後按Ctrl + C,現在看來似乎跳過多行的一個鏡頭在某個時刻:
93
94
95
^C6
897
898
899
同樣的事情發生與ls -la /bin
:
lrwxrwxrwx 1 10042 2223 7 May 6 2012 dmesg -> busybox
lrwxrwxrwx 1 10042 2223 7 May 6 2012 dos2unix -> busybox
lrwxrwxrwx 1 10042 2223 7^C 7 May 6 2012 ipcrm -> busybox
lrwxrwxrwx 1 10042 2223 7 May 6 2012 ipcs -> busybox
lrwxrwxrwx 1 10042 2223 7 May 6 2012 iplink -> busybox
取決於您已經運行shell。你在設備上運行BusyBox嗎?什麼版本?灰或全Bash?添加更多信息。 –
Ctrl-C由終端處理。串行連接沒有正常的終端,因此Ctrl-C(或實際上任何生成信號的按鍵序列)都不能正常工作。 –
@eepp在下面編輯的內核中查看有關控制檯設備處理的舊郵件列表消息(對於先前刪除內核標記感到抱歉,只是將其放回) –