Saya memiliki Mini2440 ARM Board, dan saya telah menggunakan basis sistem Debian 6.0 multistrap
.
Saya telah digunakan tmux
untuk menjalankan beberapa proses di defferent windows /etc/rc.local
. Saya terhubung ke papan menggunakan port serial dan entri inittab untuk dijalankan getty
pada port itu. Saya menggunakan picocom
sebagai komunikator serial.
Ketika root ~/.bashrc
login, 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 -a
skrip 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 pppd
proses yang memiliki masalah ini, saya pikir itu ada hubungannya dengan itu atau konfigurasinya, tetapi ketika saya menjalankan di pppd
luar tmux, Ctrl-C berfungsi. pppd
berjalan dengan nodetach
opsi, jadi tetap di terminal foreground.
Saya juga mengujinya di mesin dev saya (Debian 6.0 pada amd64) dengan hasil yang sama.
stty -a
menunjukkanintr = ^C
? Jika tidak, apaintr
pengaturannya? (Catatan:stty -a | grep intr
tidak akan berfungsi, karena membuatstty
menulis ke pipa daripada ke tty Anda.) Apakah Ctrl-V Ctrl-C gema^C
? Jika tidak, apa gema?^
dan Ctrl-C menambahkannyaC
.trap
perintah dalam skrip shell?pppd
tidak 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.Jawaban:
Pernahkah Anda berpikir tentang mencoba layar givin GNU? Sejujurnya saya tidak punya banyak pengalaman dengan tmux, tetapi layar selalu melakukan pekerjaan dengan baik.
sumber
Ternyata itu adalah bug dalam versi tertentu
pppd
yang sedang digunakan di distro. Saya memeriksa dan versi sebelumnya dan kemudianpppd
tidak memiliki masalah ini. Masalahnya juga tidak spesifik untuk lengkungan dan platform ini atautmux
. Jikapppd
dijalankan di dalam skrip shell, itu tidak menangani Ctrl-C, sementara di luar shell, tidak ada masalah.sumber