【问题标题】:How to read an unknown number of bytes from an input stream that may contain null characters?如何从可能包含空字符的输入流中读取未知数量的字节?
【发布时间】:2013-01-07 14:32:47
【问题描述】:

我在使用 Linux 中的 c 从设备读取 未知 字节数(原始数据,可能包含 NULL)时遇到了一些问题。我怎样才能读取设备“只要它准备好被读取”? (希望一次不读取 1 个字节)。

【问题讨论】:

  • 感谢您的想法。我没有想过采用这种方法,但如果我一直遇到同样的问题,我会检查是否可以像你说的那样进行映射。

标签: c linux binarystream


【解决方案1】:

好吧,如果您使用read,如果没有数据,您将阻塞,或者如果有数据要读取,则成功。如果有要读取的数据,您将获得所需的数量,或者如果没有更多要读取的数据,则获得更少的数量。查看 read 的返回值以确定您有多少。你可以让它成为非阻塞的,但是检查读取返回值的方法无论如何都是正确的。

如果您更清楚您将拥有的数据突发类型,只需将数据以您想要处理的任何大小的块进行分块,一次一个字符,或者更多。

【讨论】:

  • 我记得尝试了读取功能并遇到了问题。但我会再试一次。感谢您的帮助:)
  • 没问题。一般来说,所有的阅读方法都允许你要求比现有的更多,并告诉你最终得到了多少。
猜你喜欢
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 2021-12-04
相关资源
最近更新 更多