【发布时间】:2011-11-15 13:05:20
【问题描述】:
我需要使用“读取”等待音频编解码器设备上的缓冲区已满。为了方便起见,我们举个类似的例子:
fd= read(fileno(stdin), &buf, 10);
当我在标准输入中输入 10 个字符时,如何从读取中返回? (我希望如果这成功了,我可以在编解码器上等待,直到指定的数据字节到达)。
上面的示例需要来自控制台的“Enter Key”,因为我希望“读取”仅在到达所需的数据字节时才解除阻塞。
编辑:要求是使用单个“读取”等待指定字节到达。
【问题讨论】:
-
除了那个例子不是那么相似。
-
操作控制台与简单地从标准输入读取非常不同。除非您将 tty 置于原始模式,否则 tty 不会向程序发送任何内容,直到您按回车键。如果您的问题是关于从设备读取,那么您只会在担心键盘的情况下混淆。
-
所以这意味着我需要检查我的编解码器设备在“读取”时的行为。阻塞是底层设备的属性,而不是“读取”系统调用的属性。这就是你的意思?
-
看看
termios- 这是一个巨大的主题,但一旦你开始工作就会非常有趣