터미널이 원시 모드에 있을 때 Ctrl+D를 누릅니다.

터미널이 원시 모드에 있을 때 Ctrl+D를 누릅니다.

터미널이 원시 모드가 아닐 때 텍스트를 쓰면 텍스트가 버퍼에 배치됩니다.라인 버퍼), 그리고 를 누르면 Ctrl+D해당 버퍼의 내용이 내 애플리케이션으로 전송됩니다.

하지만 Ctrl+D를 누르고 터미널이 원시 모드에 있으면(즉, 터미널에 작성한 내용이 버퍼링되지 않고 내 애플리케이션으로 직접 전송됨) 일부 ASCII 코드가 0x04(아마도) 내 애플리케이션으로 전송되면 어떻게 되나요?

답변1

당신은 그것을 확인할 수 있습니다strace

쉘 1에서:

$ echo $$
1234

쉘 2에서:

strace -p 1234 -f

쉘 1에서:

$ stty raw
$ cat
[type something including ^D]

Shell 2에서는 다음을 볼 수 있습니다.

[pid 12345] read(0, "\4", 131072)       = 1

관련 정보