Os dados gravados em / dev / pts / x dentro do manipulador SIGINT (Ctrl + C) são descartados aleatoriamente [closed]

2

Tem Archlinux64 em VirtualBox .

Se eu declarar uma armadilha SIGINT assim:

trap 'echo x' INT

dentro de uma sessão ssh (executando bash ) e pressionando Ctrl + C várias vezes, apenas algumas vezes algo aparece no terminal. Aqui está um exemplo mais complexo. Depois de pressionar Ctrl-c 21 vezes:

[il@vmarch ~]$ n=0; trap 'echo " $n'\’'th INT"; n=$((n+1))' INT
[il@vmarch ~]$ ^C 0’th INT

[il@vmarch ~]$ ^C 7’th INT

[il@vmarch ~]$ ^C 8’th INT

[il@vmarch ~]$ ^C 9’th INT

[il@vmarch ~]$ ^C 18’th INT

[il@vmarch ~]$ ^C 21’th INT

Pressionar apenas Ctrl + C tem esse efeito; se eu enviar SIGINT explicitamente (via kill ), recebo todas as mensagens que estou esperando. Reprodutível em vários emuladores de terminal. Nunca ocorre no console de texto ( /dev/tty1 ). Sintomas semelhantes em zsh e dash : em zsh, os resultados são praticamente os mesmos. No traço, a armadilha não funciona, mas sem ela, a nova linha e o prompt são descartados também.

Não fazer nada por 5-10 segundos antes de pressionar Ctrl + C aumenta a chance de os dados serem descartados.

$ uname -a
Linux vmarch.lan 4.0.4-2-ARCH #1 SMP PREEMPT Fri May 22 03:05:23 UTC 2015 x86_64 GNU/Linux
    
por basin 12.07.2015 / 19:40

0 respostas