当终端不处于原始模式时,如果我写一些文本,该文本将被放置在缓冲区中(我认为它被称为行缓冲区),之后如果我按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