|
|
1
90
正如其他人已经说过的那样 控制 + D ,处理“文件结尾”。
控制
+
D
是用户和伪文件之间的一段通信,您将其视为stdin。它并不是特别指“文件结束”,而是更一般地说“刷新我目前键入的输入”。法拉盛意味着
所以当使用
控制
+
D
要结束一个程序,它只在一行的开头工作,或者如果你做了两次(第一次刷新,第二次刷新)
试试看:
|
|
|
2
37
Ctrl键 + 不是信号,而是EOF(文件结束)。它关闭了标准管道。如果read(STDIN)返回0,则表示STDIN已关闭,这意味着 Ctrl键 + D 被击中(假设管道的另一端有一个键盘)。 |
|
|
3
16
一个极简主义的例子:
程序将VEOF char(从Ctrl-D)更改为Ctrl-C,将VINTR char(从Ctrl-C)更改为Ctrl-D。如果按Ctrl-D,终端驱动程序将向程序的信号处理程序发送SIGINT。 注意:按下VINTR键将清除终端输入缓冲区,因此在按下VINTR键之前,您无法读取在该行中键入的字符。 |
|
|
4
5
你需要确保ISIG没有设置在终端标志上,仅此而已。 下面是一个完整的示例,使用select可以避免在stdin上阻塞:
输出:
注意。3为对照C,4为对照D;26是控制z。113是“q”。 见: http://en.wikipedia.org/wiki/ASCII#ASCII_control_characters 为了一张满桌的桌子。 |
|
|
5
4
据我所知 Ctrl键 + D 被系统转换为标准输入的末尾,这样你的应用程序就不会收到任何信号。 我认为只有这样才能拦截 Ctrl键 + D 直接使用系统api(比如访问tty) |
|
|
6
1
Ctrl键
+
D
ascci表中的值为4,是不可打印的字符。
|
|
|
7
0
您可以使用poll()并在fd#1上查看POLLHUP,因为TTY层将^D转换为EOF。 |
|
|
sk123 · Shell脚本-如何在循环中显示变量名及其值 2 年前 |
|
|
sai · unix中使用python进行数据重组 2 年前 |
|
|
FangQ · 如何使用jq打印由制表符“\t”分隔的JSON数组元素 2 年前 |
|
|
ROHAN · 我想显示包含一个括号的行,包括它的开头或结尾 2 年前 |
|
Geomicro · 删除模式sed之间的逗号 2 年前 |