![当终端处于原始模式时按 Ctrl+D](https://linux22.com/image/120955/%E5%BD%93%E7%BB%88%E7%AB%AF%E5%A4%84%E4%BA%8E%E5%8E%9F%E5%A7%8B%E6%A8%A1%E5%BC%8F%E6%97%B6%E6%8C%89%20Ctrl%2BD.png)
当终端不处于原始模式时,如果我写一些文本,该文本将被放置在缓冲区中(我认为它被称为行缓冲区),之后如果我按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