以非阻塞方式阅读文字行

时间:2016-07-07 08:15:44

标签: c file-descriptor

在C程序中,我想从stdin读取文本行。 同时我想处理来自另一个文件描述符的数据。

我尝试使用poll等待两个源中的任何一个变得可读并相应地处理它们。但是民意调查需要裸文件描述符,并且用fgets来读取整行,我需要一个FILE句柄。

我可以使用filenofdopen来“转换”它们,但以混合的方式使用它们似乎并不是一个好主意。

因此,有没有一种好方法可以在不阻塞或线程的情况下等待文本行?

1 个答案:

答案 0 :(得分:0)

您可以根据需要使用任何内容进行多路复用(select()poll()epoll_wait())。但是你不应该从stdin读取fgets(),因为多路复用对于我们是否有完整的行或者没有知道。因此在某些情况下可能会阻止。您应该编写自定义行读取功能,这将表明还没有完整的行并立即返回。