Ctrl-C tidak bekerja dengan pppd sesi yang tidak terpisah

12

Saya memiliki Mini2440 ARM Board, dan saya telah menggunakan basis sistem Debian 6.0 multistrap.

Saya telah digunakan tmuxuntuk menjalankan beberapa proses di defferent windows /etc/rc.local. Saya terhubung ke papan menggunakan port serial dan entri inittab untuk dijalankan gettypada port itu. Saya menggunakan picocomsebagai komunikator serial.

Ketika root ~/.bashrclogin, lampirkan dia ke server tmux yang sudah berjalan, dan proses dapat dengan mudah dipantau. perintah sebenarnya adalah exec tmux attach-session -t "main". tmux berjalan dengan konfigurasi default.

Semuanya berfungsi, kecuali salah satu proses (skrip shell di sekitar pppd) tidak menerima Ctrlcdari terminal, sementara proses lain melakukannya. Juga Ctrl\berfungsi. juga kill -INT <pppd_pid>berfungsi, tetapi kill -INT <shellscript_pid>tidak.

Saya benar-benar perlu Ctrlcbekerja. Apa yang salah dengan pengaturan ini?

Sunting: di sini adalah output dari stty -askrip shell, tepat sebelum 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

karena itu hanya pppdproses yang memiliki masalah ini, saya pikir itu ada hubungannya dengan itu atau konfigurasinya, tetapi ketika saya menjalankan di pppdluar tmux, Ctrl-C berfungsi. pppdberjalan dengan nodetachopsi, jadi tetap di terminal foreground.

Saya juga mengujinya di mesin dev saya (Debian 6.0 pada amd64) dengan hasil yang sama.

zaadeh
sumber
6
Apakah stty -amenunjukkan intr = ^C? Jika tidak, apa intrpengaturannya? (Catatan: stty -a | grep intrtidak akan berfungsi, karena membuat sttymenulis ke pipa daripada ke tty Anda.) Apakah Ctrl-V Ctrl-C gema ^C? Jika tidak, apa gema?
Keith Thompson
@KeithThompson Ctrl-V mencetak a ^dan Ctrl-C menambahkannya C.
zaadeh
7
Ini tampaknya terlalu jelas, tetapi apakah ada trapperintah dalam skrip shell?
Keith Thompson
1
pppdtidak memiliki suara dalam apa shell yang mendasarinya memutuskan untuk melakukan dengan SIGINT langsung. Cobalah menulis skrip shell kecil yang memanggil / bin / sleep 600 dan mengirimkan proses shell SIGINT, Anda akan melihat hal yang sama persis.
Andrew B
2
Saya tidak tahu tmux cukup baik tetapi saya menduga pppd mendeteksi bahwa ia tidak memiliki terminal meskipun berjalan di bawah tmux dan kemudian mengabaikan sinyal INT. jejak pppd saat itu dimulai, serta ketika tmux "Detatched" pertama kali, mungkin akan memberitahu.
Johan

Jawaban:

2

Pernahkah Anda berpikir tentang mencoba layar givin GNU? Sejujurnya saya tidak punya banyak pengalaman dengan tmux, tetapi layar selalu melakukan pekerjaan dengan baik.

Alessandro Meyer
sumber
Layar itu seksi dan fantastis. A +1 untuk Anda.
root
0

Ternyata itu adalah bug dalam versi tertentu pppdyang sedang digunakan di distro. Saya memeriksa dan versi sebelumnya dan kemudian pppdtidak memiliki masalah ini. Masalahnya juga tidak spesifik untuk lengkungan dan platform ini atau tmux. Jika pppddijalankan di dalam skrip shell, itu tidak menangani Ctrl-C, sementara di luar shell, tidak ada masalah.

zaadeh
sumber