Данные, записанные в / dev / pts / x внутри обработчика SIGINT (Ctrl + C), случайным образом отбрасываются

Имейте Archlinux64 на VirtualBox .

Если я объявлю ловушку SIGINT следующим образом:

 trap 'echo x' INT 

внутри сеанса ssh (запуск bash ) и несколько раз нажмите Ctrl + C , только несколько раз что-то появляется в терминале. Вот более сложный пример. После нажатия Ctrl-c 21 раз:

 [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 

Этот эффект действует только при нажатии Ctrl + C ; если я отправлю SIGINT явно (через kill ), я получаю все сообщения, которые я ожидаю. Воспроизводимость в нескольких эмуляторах терминалов. Никогда не возникает в текстовой консоли ( /dev/tty1 ). Подобные симптомы в zsh и dash : в zsh результаты практически одинаковы. В тире ловушка не работает, но без нее также отменяется новая строка и подсказка.

Не делая ничего за 5-10 секунд, прежде чем нажимать Ctrl + C, увеличивается вероятность того, что данные будут отброшены.

 $ 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 

Interesting Posts
Linux и Unix - лучшая ОС в мире.