C 非阻塞stdio

C 非阻塞stdio,c,io,stdio,C,Io,Stdio,我想使用stdio是一个用于缓冲I/O的小型C程序。我使用stdio而不是自己缓冲原始I/O函数并不是很重要,但是这个程序足够小,我会觉得为它重新实现缓冲I/O很愚蠢 但是,我也希望在等待输入时不要阻塞。有什么好办法吗?我正在考虑在底层文件描述符上设置O_NONBLOCK,但我不确定这是否在stdio文件上定义良好。如果有潜在的I/O返回错误,或者是对我的误解,那么< > STDIO 实现可能会决定考虑文件*/COD>永久性破坏? 那么,基本上:如何在O_非块流上以定义良好的方式使用stdio

我想使用
stdio
是一个用于缓冲I/O的小型C程序。我使用
stdio
而不是自己缓冲原始I/O函数并不是很重要,但是这个程序足够小,我会觉得为它重新实现缓冲I/O很愚蠢

但是,我也希望在等待输入时不要阻塞。有什么好办法吗?我正在考虑在底层文件描述符上设置
O_NONBLOCK
,但我不确定这是否在
stdio
文件上定义良好。如果有潜在的I/O返回错误,或者是对我的误解,那么< <代码> > STDIO 实现可能会决定考虑<代码>文件*/COD>永久性破坏?
那么,基本上:如何在
O_非块
流上以定义良好的方式使用
stdio
?如果这是不可能的,是否有其他定义良好的方法通过
stdio
执行非阻塞读取?

可能您可以稍微自定义头文件,可能不是您想要的,但是。。。线程?@rodrigo:确实不是我想要的。向该程序添加适当的同步和内容比手动缓冲I/O要复杂得多。@PhilippBraun:这一点是为了在不同的
stdio
实现中保持一定的可移植性。否则的话,我会用glibc的工作方式来做这件事