읽기 명령을 호출할 때 트랩 "인터럽트"가 작동하지 않습니다.

읽기 명령을 호출할 때 트랩 "인터럽트"가 작동하지 않습니다.

저는 학교 프로젝트를 위해 작성된 bash 실행 게임을 가지고 있으며 현재 사용자가 실제 게임에서 카테고리 선택 메뉴로 돌아갈 수 있도록 ctrl-c 종료 명령을 while 루프 중단으로 대체하려고 합니다.

현재 사용하고 있는 코드는 다음과 같습니다.

trap "break" SIGINT

while 루프 내부:

read CHAR

루프에서 텍스트를 인쇄하고 sleep 명령을 실행할 때 모든 것이 잘 작동하지만 알고리즘이 읽기 명령에 있을 때 ctrl-c를 누르면 콘솔에 "^C"만 입력됩니다.

답변1

Bash가 명령이 완료되기를 기다리고 트랩이 설정되었다는 신호를 받으면 명령이 완료될 때까지 트랩이 실행되지 않습니다.

그렇기 때문에 중단되지 않습니다 read.

^C설정으로 인해 쉘이 아닌 터미널에서 출력됩니다 echoctl. 실행하면 나타나지 않습니다 stty -echoctl.

관련 정보