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.
^und Strg-C fügt ein hinzu C.
trapBefehl im Shell-Skript?
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.
stty -azeigenintr = ^C? Wenn nicht, wie ist dieintrEinstellung? (Hinweis: Funktioniertstty -a | grep intrnicht, dasttyin eine Pipe und nicht in Ihre Tty geschrieben wird.) Gibt Strg-V Strg-C ein Echo aus^C? Wenn nicht, was ist das Echo?