Linux中结束指令的标准输入
问题
Linux中很多指令同时支持文件输入和标准输入,大部分标准输入,都是用-符号表示标准输入,然而在使用该指令时遇到了一个问题,就是这中输入输入回车符号不会结束输入,导致不知该如何结束;
办法
想结束输入时,需要先输入回车,然后输入ctrl+D:
<ctrl + D> , <ctrl + D>
linux中一切皆为文件,因此我们可以把标准输入流当做别样的文件输入看待;回想一下我们处理文件时的做法,是碰到文件结束符
EOF时认为到了文件末尾,猜想对于标准输入的这类情况同样适用,EOF标志可以由指令产生。 如果按下
之前有输入字符,则 就相当于回车把输入的内容送到输入缓冲区供读取使用,此时 不作为流结束符使用,下次按下的 则作为流结束标志。如果按下 之前没有输入任何数据,刚 作为流结束标志,表示标准输入设备对应的文件结束。
另外,标准输入设备是行缓冲的,当从键盘上输入字符串,输入的字符串会首先被送到输入缓冲区中存储,当按下回车键后才会去检测输入缓冲区中是否有了数据(也就是说fgets,fgetchar等函数这个时候才去从缓冲区中读数据)。
如果想输入原始
,那么可以先按下Ctrl-V,然后就可以输入Ctrl-D,系统就不会认为这是EOF信号。Ctrl-V表示按"字面含义"解读下一个输入,要是想按"字面含义"输入Ctrl-V,连续输入两次就行了。
参考文章
- linux中关于标准输入中涉及EOF的处理方式
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
