Você pode verificar isso com strace
No shell 1:
$ echo $$
1234
No shell 2:
strace -p 1234 -f
No shell 1:
$ stty raw
$ cat
[type something including ^D]
No Shell 2, você pode ver:
[pid 12345] read(0, "", 131072) = 1
Quando o terminal não está no modo raw, se eu escrever algum texto, este texto será colocado em um buffer (eu acho que é chamado de line buffer ), depois disso se eu pressionar Ctrl+D
, o conteúdo deste buffer será enviado para o meu aplicativo.
Mas o que acontece quando eu pressiono Ctrl+D
e o terminal está no modo raw (ou seja, o que escrevo no terminal não é armazenado em buffer, mas sim enviado diretamente para meu aplicativo), algum código ASCII (provavelmente 0x04
) ser enviado para o meu pedido?