Ich habe ein Mini2440-ARM-Board, und ich habe ein Basis-Debian 6.0-System damit installiert multistrap
.
Ich habe früher tmux
mehrere Prozesse in verschiedenen Fenstern ausgeführt /etc/rc.local
. Ich verbinde mich mit der Karte über ihren seriellen Port und einen inittab-Eintrag, um getty
an diesem Port zu laufen . Ich benutze picocom
als serielle Kommunikator.
Wenn sich root anmeldet, ~/.bashrc
hä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 -a
im 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 pppd
Prozess handelt, der dieses Problem aufweist, hat dies meiner Meinung nach etwas mit der Konfiguration zu tun, aber wenn ich pppd
außerhalb von tmux laufe, funktioniert Strg-C. pppd
Läuft mit nodetach
Option, 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
.
trap
Befehl im Shell-Skript?
pppd
kann 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 -a
zeigenintr = ^C
? Wenn nicht, wie ist dieintr
Einstellung? (Hinweis: Funktioniertstty -a | grep intr
nicht, dastty
in eine Pipe und nicht in Ihre Tty geschrieben wird.) Gibt Strg-V Strg-C ein Echo aus^C
? Wenn nicht, was ist das Echo?