Ctrl-C no funciona con la sesión no separada de pppd

12

Tengo una placa ARM Mini2440, y he puesto un sistema base Debian 6.0 usando multistrap.

Solía tmuxejecutar varios procesos en ventanas diferentes desde /etc/rc.local. Me conecto a la placa usando su puerto serie y una entrada inittab para ejecutar gettyen ese puerto. Yo uso picocomcomo comunicador en serie.

Cuando root inicia sesión, ~/.bashrclo conecta al servidor tmux que ya se está ejecutando, y los procesos se pueden monitorear fácilmente. El comando real es exec tmux attach-session -t "main". tmux se ejecuta con la configuración predeterminada.

Todo funciona, excepto que uno de los procesos (un script de shell pppd) no recibe Ctrlcdel terminal, mientras que otros procesos sí. También Ctrl\funciona También kill -INT <pppd_pid>funciona, pero kill -INT <shellscript_pid>no funciona.

Realmente necesito Ctrlctrabajar. ¿Qué hay de malo en esta configuración?

Editar: aquí está la salida de stty -aen el script de shell, justo antes 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

Dado que es solo el pppdproceso el que tiene este problema, creo que tiene algo que ver con él o su configuración, pero cuando ejecuto pppdfuera de tmux, Ctrl-C funciona. pppdse ejecuta con nodetachopción, por lo que permanece en primer plano terminal.

También lo probé en mi máquina de desarrollo (Debian 6.0 en amd64) con los mismos resultados.

zaadeh
fuente
66
No stty -amostrar intr = ^C? Si no, ¿cuál es la intrconfiguración? (Nota: stty -a | grep intrno funcionará, ya que hace que sttyescribir en una tubería en lugar de en su tty.) ¿Ctrl-V Ctrl-C hace eco ^C? Si no, ¿a qué se hace eco?
Keith Thompson, el
@KeithThompson Ctrl-V imprime una ^y Ctrl-C le agrega una C.
zaadeh
77
Esto parece demasiado obvio, pero ¿hay un trapcomando en el script de shell?
Keith Thompson
1
pppdno tiene voz en lo que su shell subyacente decide hacer con un SIGINT directo. Intente escribir un pequeño script de shell que invoque / bin / sleep 600 y envíe al proceso de shell un SIGINT, verá exactamente lo mismo.
Andrew B
2
No conozco tmux lo suficientemente bien, pero sospecho que pppd detecta que no tiene un terminal a pesar de ejecutarse bajo tmux y luego ignora las señales INT. probablemente habrá un rastro de pppd mientras se inicia, así como cuando tmux está "Detatched" la primera vez.
Johan

Respuestas:

2

¿Alguna vez has pensado en probar la pantalla GNU GNU? Para ser honesto, no tengo mucha experiencia con tmux, pero la pantalla siempre hizo el trabajo bien.

Alessandro Meyer
fuente
La pantalla es sexy y fantástica. Un +1 para ti.
raíz
0

Resultó que era un error en la versión particular pppdque se estaba usando en la distribución. Verifiqué y las versiones anteriores y posteriores de pppdno tienen este problema. Además, el problema no es específico de este arco y plataforma o tmux. Si pppdse ejecuta dentro de un script de shell, no maneja Ctrl-C, mientras que fuera de shell, no tiene ningún problema.

zaadeh
fuente