C - 以非阻塞方式读取文本行



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

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

我可以使用filenofdopen来"转换"它们,但以混合方式使用两者似乎不是一个好主意。

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

你可以使用任何你想要的多路复用(select()poll()epoll_wait())。但是你不应该从stdin中读fgets()因为多路复用不知道我们是否有完整的行。因此,在某些情况下可能会阻止。您应该编写自定义行读取函数,这将指示还没有完整的行并立即返回。

相关内容

  • 没有找到相关文章

最新更新