在C程序中,我想从stdin读取文本行。 同时我想处理来自另一个文件描述符的数据。
我尝试使用poll
等待两个源中的任何一个变得可读并相应地处理它们。但是民意调查需要裸文件描述符,并且用fgets
来读取整行,我需要一个FILE句柄。
我可以使用fileno
或fdopen
来“转换”它们,但以混合的方式使用它们似乎并不是一个好主意。
因此,有没有一种好方法可以在不阻塞或线程的情况下等待文本行?
答案 0 :(得分:0)
您可以根据需要使用任何内容进行多路复用(select()
,poll()
,epoll_wait()
)。但是你不应该从stdin
读取fgets()
,因为多路复用对于我们是否有完整的行或者没有知道。因此在某些情况下可能会阻止。您应该编写自定义行读取功能,这将表明还没有完整的行并立即返回。