gpt4 book ai didi

c++ - 检查 fgets 是否会阻塞

转载 作者:太空狗 更新时间:2023-10-29 23:10:00 26 4
gpt4 key购买 nike

我只是想知道在 C 中是否可以查看输入缓冲区或执行类似的技巧以了解对 fgets 的调用是否会在以后阻塞。Java 允许通过调用 BufferedReader.ready() 来做类似的事情,这样我就可以像这样实现控制台输入:

while (on && in.ready()) { 
line = in.readLine();
/* do something with line */
if (!in.ready())
Thread.sleep(100);
}

这允许外部线程通过将 on 设置为 false 来优雅地关闭输入循环;我想在 C 中执行类似的实现而不诉诸不可移植的技巧,我已经知道我可以在 unix 下通过诉诸信号或(更好,即使需要处理缓冲)重新实现“超时 fgets”它在 recv/select 之上,但我更喜欢在 Windows 上也能工作的东西。

TIA

最佳答案

建议使用套接字 I/O 例程,最好是 poll() 所需的毫秒作为超时,最终您可以将超时(返回值 = -1)解释为输入缓冲区中的数据不可用。
在我看来,没有非阻塞的标准 I/O 函数来实现这个功能。

关于c++ - 检查 fgets 是否会阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2736010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com