Strg-C funktioniert nicht mit nicht getrennten pppd-Sitzungen

12

Ich habe ein Mini2440-ARM-Board, und ich habe ein Basis-Debian 6.0-System damit installiert multistrap.

Ich habe früher tmuxmehrere Prozesse in verschiedenen Fenstern ausgeführt /etc/rc.local. Ich verbinde mich mit der Karte über ihren seriellen Port und einen inittab-Eintrag, um gettyan diesem Port zu laufen . Ich benutze picocomals serielle Kommunikator.

Wenn sich root anmeldet, ~/.bashrchängt er ihn an den bereits laufenden tmux-Server an und Prozesse können einfach überwacht werden. Der eigentliche Befehl lautet exec tmux attach-session -t "main". tmux läuft mit der Standardkonfiguration.

Alles funktioniert, außer dass einer der Prozesse (ein Shell-Skript pppd) nicht Ctrlcvom Terminal empfängt , während andere Prozesse dies tun. Funktioniert auch Ctrl\. auch kill -INT <pppd_pid>funktioniert, aber kill -INT <shellscript_pid>nicht.

Ich muss wirklich Ctrlcarbeiten. Was ist falsch an diesem Setup?

Bearbeiten: Hier ist die Ausgabe von stty -aim Shell-Skript, direkt vor 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

da es sich nur um einen pppdProzess handelt, der dieses Problem aufweist, hat dies meiner Meinung nach etwas mit der Konfiguration zu tun, aber wenn ich pppdaußerhalb von tmux laufe, funktioniert Strg-C. pppdLäuft mit nodetachOption, bleibt also im Terminal-Vordergrund.

Ich habe es auch auf meinem Dev-Rechner (Debian 6.0 auf amd64) mit den gleichen Ergebnissen getestet.

zaadeh
quelle
6
Ist stty -azeigen intr = ^C? Wenn nicht, wie ist die intrEinstellung? (Hinweis: Funktioniert stty -a | grep intrnicht, da sttyin eine Pipe und nicht in Ihre Tty geschrieben wird.) Gibt Strg-V Strg-C ein Echo aus ^C? Wenn nicht, was ist das Echo?
Keith Thompson
@KeithThompson Strg-V druckt ein ^und Strg-C fügt ein hinzu C.
Zaadeh
7
Dies scheint zu offensichtlich, aber gibt es einen trapBefehl im Shell-Skript?
Keith Thompson
1
pppdkann nicht sagen, was die zugrunde liegende Shell mit einem direkten SIGINT anfängt. Schreiben Sie ein kleines Shell-Skript, das / bin / sleep 600 aufruft, und senden Sie dem Shell-Prozess ein SIGINT. Sie werden genau dasselbe sehen.
Andrew B
2
Ich kenne tmux nicht gut genug, aber ich vermute, dass pppd erkennt, dass es kein Terminal hat, obwohl es unter tmux läuft, und ignoriert dann INT-Signale. Eine Spur von pppd, während es gestartet wird, sowie wenn tmux das erste Mal "Detatched" ist, wird wahrscheinlich verraten.
Johan

Antworten:

2

Haben Sie jemals darüber nachgedacht, GNU-Bildschirm auszuprobieren? Um ganz ehrlich zu sein, habe ich nicht viel Erfahrung mit tmux, aber der Bildschirm hat immer gute Arbeit geleistet.

Alessandro Meyer
quelle
Bildschirm ist sexy und fantastisch. Ein +1 für Sie.
root
0

Es stellte sich heraus, dass es sich um einen Fehler in der speziellen Version handelte pppd, die in der Distribution verwendet wurde. Ich pppdhabe dieses Problem überprüft und frühere und spätere Versionen von haben es nicht. Auch ist das Problem nicht spezifisch für diesen Bogen und Plattform oder tmux. Wenn pppdes in einem Shell-Skript ausgeführt wird, kann es nicht mit Strg-C umgehen, während es außerhalb der Shell kein Problem hat.

zaadeh
quelle