【发布时间】:2019-01-08 06:37:46
【问题描述】:
我是Unix/Linux的初学者,只是一个关于文件描述符的问题,我的教科书问一个问题:
在大多数 Unix 系统中,键入 ctrl-d 表示标准输入上的 EOF。什么 如果您在图 12.6 中的程序(只是一个使用 select() 的程序)中键入 ctrl-d 会发生这种情况,而它在调用 select 时被阻塞?
答案是:
如果从该描述符读取 1 个字节的请求不会阻塞,则该描述符已准备好读取。如果 EOF 在描述符上变为真,则描述符已准备好读取,因为读取操作将立即返回零返回代码,指示 EOF。因此,键入 ctrl-d 会导致选择函数返回就绪集中的描述符 0。
所以我的问题:
为什么在我们按下 ctrl-d 之前文件描述符无法读取 1 个字节?
【问题讨论】: