Linux

Ctrl-C 不適用於 pppd 非分離會話

  • November 28, 2019

我有一個 Mini2440 ARM 板,我在上面安裝了一個基本的 Debian 6.0 系統,使用multistrap.

我曾經tmux在不同的視窗中執行多個程序/etc/rc.local。我使用它的串列埠和一個在該埠上執行的 inittab 條目連接到板getty。我picocom用作串列通信器。

當 root 登錄時,~/.bashrc將他附加到已經執行的 tmux 伺服器上,並且可以輕鬆監控程序。實際的命令是exec tmux attach-session -t "main". tmux 使用預設配置執行。

一切正常,除了其中一個程序(周圍的 shell 腳本pppd)沒有Ctrl``c從終端接收,而其他程序可以。也Ctrl``\有效。kill -INT <pppd_pid>有效,但kill -INT <shellscript_pid>沒有。

我真的需要Ctrl``c工作。這個設置有什麼問題?

編輯:這是stty -ashell腳本中的輸出,就在之前pppd

speed 38400 baud; rows 23; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <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 -iutf8
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

因為它只是pppd有這個問題的程序,我認為它與它或它的配置有關,但是當我pppd在 tmux 之外執行時,Ctrl-C 可以工作。pppd使用nodetach選項執行,因此它保持在終端前台。

我還在我的開發機器(amd64 上的 Debian 6.0)上對其進行了測試,結果相同。

原來這是pppd發行版中使用的特定版本中的一個錯誤。我查了一下,以前和以後的版本pppd都沒有這個問題。此外,該問題並非特定於該拱門和平台或tmux. 如果pppd在 shell 腳本中執行,它不處理 Ctrl-C,而在 shell 之外,它沒有問題。

你有沒有想過嘗試一下 GNU 螢幕?老實說,我對 tmux 沒有太多經驗,但 screen 總是做得很好。

引用自:https://unix.stackexchange.com/questions/50093