栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从stderr获得键盘输入的更少?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从stderr获得键盘输入的更少?

$ ls -l / dev / fd /lrwx ------ 1 me me 64 2009-09-17 16:52 0-> / dev / pts / 4lrwx ------ 1 me me 64 2009-09-17 16:52 1-> / dev / pts / 4lrwx ------ 1 me me 64 2009-09-17 16:52 2-> / dev / pts / 4

在交互式终端上登录时,所有三个标准文件描述符都指向同一件事:您的TTY(或伪TTY)。

$ ls -fl / dev / std {in,out,err}lrwxrwxrwx 1根根4 2009-09-13 01:57 / dev / stdin-> fd / 0lrwxrwxrwx 1根根4 2009-09-13 01:57 / dev / stdout-> fd / 1lrwxrwxrwx 1根根4 2009-09-13 01:57 / dev / stderr-> fd / 2

按照惯例,我们读出

0
和写入
1
2
。但是,没有什么可以阻止我们采取其他行动。

当你的shell运行时

ls -l * |less
,它创建了一个从管道
ls
的文件描述符
1
less
的文件描述符
0
。显然,
less
它不再能够从文件描述符中读取用户的键盘输入
0
-它会设法将TTY重新找回。

如果

less
尚未从终端上拆下,
open("/dev/tty")
将给它TTY。

但是,如果失败了,该怎么办?

less
尝试最后一次获取TTY,假设文件描述符
2
附加到了文件描述符附加的同一对象
0
上(如果未重定向的话)。

不是 故障预防:

$ ls -l * | 少setsid 2> / dev / null

在这里,

less
为其分配了自己的会话(因此它不再是终端活动进程组的一部分,从而导致
open("/dev/tty")
失败),并且其文件描述符
2
已更改-
现在
less
立即退出,因为它正在输出到TTY,但无法获取任何用户输入。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号