CTRL-C가 작동하지 않을 때 명령줄에서 작동하게 하려면 어떻게 해야 합니까?

CTRL-C가 작동하지 않을 때 명령줄에서 작동하게 하려면 어떻게 해야 합니까?

특정 환경 셸 명령줄(CentOS 7/Windows 호스트의 Vagrant 게스트)에서 CTRL+C를 사용할 수 없는 문제로 어려움을 겪고 있습니다. 나는 거기에서 bash를 사용하고 있습니다. 운영체제는 별 상관 없는 것 같습니다.

예제를 실행 sleep 1000하고 ctrl-c를 누르십시오.

$ sleep 1000
^C^C^C

따라서 ^C를 입력하세요.

^C혼란이 일어나기 마련입니다.

$ stty -a
intr = ^C; ... 

어떻게만들다이것이 작동할까요?

아래 게시물에서 저는 이 문제를 해결하려는 영감을 얻었습니다. 답변은 많은 설명을 제공하지만 작동 방법에 대한 간단한 답변은 제공하지 않습니다.
Ctrl-C가 작동하지 않는 이유는 무엇입니까?
이것이 제가 겪고 있는 간단한 일인 것 같습니다.

답변1

에서 언급했듯이Bash에서 SIG_IGN 및 SIG_DFL에 신호 트랩을 어떻게 설정할 수 있습니까?간단한 해결책은 다음과 같습니다.

trap - INT

~/.bashrc예를 들어 다음 코드를 bash에 추가하면 됩니다.

나는 원인을 찾지 않고 그냥 고치기로 결정했습니다.

또 다른 흥미로운 게시물: Ctrl+C를 누르면 ^C 삭제

답변2

키 매핑 문제인 것 같습니다.

쉘 프롬프트에서 다음을 입력하십시오.

stty sane

그런 다음 CTRL-C를 사용하여 명령을 중지해 보십시오. 그래도 작동하지 않으면 다음 출력을 추가하세요.

stty -a

귀하의 질문에. 이 stty -a명령은 현재 터미널 라인 설정을 나열합니다. 관심 항목을 이라고 합니다 intr. 잘못 설정 하면 intrCTRL-C가 적용되지 않습니다.

intr설정이 잘못된 경우 다음 명령을 사용하여 재설정해 볼 수 있습니다.

stty intr CTRL-V-C

stty intr즉, 을 입력하고 공백을 입력한 다음 CTRL 키를 누른 채 을 누르고 vc사이에 공백이나 다른 문자가 없어야 한다는 의미입니다 .

그런 다음 CTRL-C를 다시 사용하여 명령을 중지하고 결과를 확인하십시오.

관련 정보