SIGINT(Ctrl+C) 핸들러 내에서 /dev/pts/x에 기록된 데이터는 무작위로 삭제됩니다.

SIGINT(Ctrl+C) 핸들러 내에서 /dev/pts/x에 기록된 데이터는 무작위로 삭제됩니다.

위로 Archlinux64.VirtualBox

다음과 같이 SIGINT 트랩을 선언하면:

trap 'echo x' INT

ssh세션(실행 중 ) 에서 +를 여러 번 bash누르면 터미널에 무언가가 몇 번만 나타납니다. 다음은 더 복잡한 예입니다. Ctrl-c를 21번 누른 후:CtrlC

[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에서 거의 동일합니다. 대시에서는 트랩이 작동하지 않지만, 트랩이 없으면 개행 문자와 프롬프트도 삭제됩니다.

Ctrl+를 누르기 전 5~10초 동안 아무것도 하지 않으면 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

관련 정보