- Bash에서는 여기 문서를 통해 종료 신호를 변경할 수 있다는 것을 배웠습니다. 그러나 기본적으로 입력 끝을 알리는 방법은 무엇입니까
stdin
? cat
우연히 and 를 사용하면 + 표기법으로chardet
입력을 수행할 수 있다는 것을 알게 되었습니다stdin
. 그런데 +와 +는 실행 중인 명령의 실행을 종료하는 것과 유사하다는 것을 기억하는 것 같습니다. 그럼 제가 틀렸나요?CtrlDCtrlDCtrlC
답변1
Ctrl+D, 터미널의 줄 시작 부분에 입력되면 입력이 끝났음을 나타냅니다. 이것은 아니다신호Unix 의미에서 애플리케이션이 터미널에서 읽고 사용자가 를 누르면 Ctrl+D파일 끝에 도달했다는 알림이 애플리케이션에 전달됩니다(마치 파일에서 마지막 바이트를 읽고 전달한 것처럼).
Ctrl+C신호를 보내고,지능을 신호하다. 기본적으로 SIGINT(인터럽트 신호)는 포그라운드 애플리케이션을 종료하지만 애플리케이션은 신호를 포착하고 다른 방식으로 반응할 수 있습니다(예를 들어 쉘 자체가 신호를 포착하고 입력하기 시작한 줄을 중단하지만 그렇지 않습니다. 그렇게 하세요) 종료하지 않으면 새 프롬프트가 표시되고 새 명령줄이 나올 때까지 기다립니다.
다음을 사용하여 파일 끝 및 SIGINT와 관련된 문자를 변경할 수 있습니다.stty
와 같은 명령은 파일 끝 문자를 stty eof a
생성 하고 SIGINT 문자를 비활성화합니다. 이는 거의 유용하지 않습니다.
a
stty intr ^-
답변2
답변3
추가 정보를 검색하는 동안 이 문제를 발견했습니다. 제공된 답변은 정확하지만 내부 작업에 너무 관여하고 있다고 생각합니다.
간단하고 비기술적인 대답은 Ctrl+ DSTDIN 파일을 종료하고 Ctrl+ C활성 애플리케이션을 종료하는 것입니다.
둘 다 키보드 드라이버에서 처리되며 키보드에서 읽는 모든 프로그램에 적용됩니다.
차이점을 확인하려면 명령줄 셸을 시작하고 wc
인수 없이 명령을 입력하세요. 이제 STDIN 입력을 기다리고 있습니다. 문장을 입력하고 "반환"하세요. 이제 Ctrl+를 입력하여 행, 단어 및 문자 수를 완성하고 제공하십시오 D.wc
동일한 작업을 수행하되 Ctrl+ 를 입력합니다 C. wc는 출력 없이 종료됩니다.