【发布时间】:2016-07-07 08:15:44
【问题描述】:
在 C 程序中,我想从标准输入读取文本行。 同时我想处理来自另一个文件描述符的数据。
我尝试使用poll 等待两个源中的任何一个变得可读并相应地处理它们。但是 poll 需要裸文件描述符,并且要读取带有 fgets 之类的整行,我需要一个 FILE 句柄。
我可以使用fileno 或fdopen 来“转换”它们,但混合使用这两种方法似乎不是一个好主意。
那么,有没有一种不阻塞或线程等待文本行的好方法?
【问题讨论】:
-
为什么不使用像
read()这样的系统调用来读取标准输入? -
read直到行尾才能轻松阅读。这意味着我需要实现自己的类似于 FILE 的缓冲基础架构。 -
fdopen在我看来是正确的方式。你试过了吗? -
请注意,当
poll()返回时,因为stdin有更多数据,这并不意味着有整行并且fgets()不会阻塞。 -
标签: c file-descriptor