표준 입력의 끝을 알리는 방법 될 수 있음을 알게되었습니다. 그러나

  1. Bash에서는 결말 신호가 여기 문서에 의해 변경 될 수 있음을 알게되었습니다. 그러나 기본적으로 stdin 입력의 끝을 어떻게 신호 할 수 있습니까?
  2. 고양이와 chardet을 사용하면 stdin 입력이 Ctrl + d로 완료되었음을 알 수 있습니다. 그러나 Ctrl + d 및 Ctrl + c는 실행중인 명령의 실행을 끝내는 것과 비슷하다는 것을 기억합니다. 내가 틀렸어?


답변

Ctrl+D터미널에서 줄의 시작 부분에 입력하면 입력의 끝을 나타냅니다. 이것은 유닉스 의미 의 신호 가 아닙니다 : 응용 프로그램이 터미널에서 읽고 사용자가을 누르면 Ctrl+D응용 프로그램은 파일의 끝 부분에 도달했음을 알립니다 (파일에서 읽거나 마치 마지막 바이트).

Ctrl+CSIGINT 신호를 보냅니다 . 기본적으로 SIGINT (인터럽트 신호)는 포 그라운드 응용 프로그램을 종료하지만 응용 프로그램은 신호를 포착하고 다른 방식으로 반응 할 수 있습니다 (예 : 셸 자체가 신호를 포착하고 입력을 시작한 행을 중단하지만 ‘ 종료하면 새 프롬프트가 표시되고 새 명령 줄을 기다립니다.


당신은 끝 파일와 SIGINT와 관련된 문자를 변경할 수 있습니다 stty명령을, 예를 들면 stty eof a만들 것 a파일 끝 문자를, 그리고 stty intr ^-SIGINT 문자를 사용하지 않도록한다. 이것은 거의 유용하지 않습니다.


답변

두 번째 요점은 완전히 다른 두 가지를 함께 모은 것입니다.

  • Ctrl + C는 실행중인 프로세스에 종료 신호를 보냅니다.
  • Ctrl + D는 전송 종료 문자를 보냅니다 .

당신은 후자를 찾고 있습니다.


답변