1

我正在开发的库的目的之一是从文件中检索指定数量的字节,在这种特定情况下,我希望访问/dev/random以检索基于熵的随机序列。

我对 fread 的主要问题是它会在等待更多熵时无限期挂起,这是不需要的。我的下一个选择是用 feof 包装 fread 以分块获取字节,然后我至少可以提供完整的百分比以获得更好的体验,尽管从我可以收集到的迭代 1、2、3、4.. 的字节将是很难追踪到完全等于所需的数量。

C标准中是否有一种方法可以满足我正在寻找的东西,想要的确切数量和块?如果我要查找此超时,线程化数据请求是否是一个不错的选择?

4

2 回答 2

1

定义“标准”。你的意思是ISO C标准吗?POSIX?Linux 标准库 (LSB)?对于 POSIX,read调用允许您指定尝试读取的缓冲区的大小。您可以使用pselectpoll来确定是否有可供读取的字节,使用超时而不是阻塞。在 Linux 上,可以使用“FIONREAD” ioctl调用来获取可供读取的确切字节数。

也就是说,你应该问问自己是否需要那种程度的熵。您可能(或可能不会)能够从“/dev/urandom”中阅读。当然,您必须确定是否是这种情况。

于 2011-04-01T02:14:39.887 回答
0

试试这个

这是我认为可以解决您的问题的功能的手册页。

http://www.manpagez.com/man/3/fgets/

我刚刚看到 fread 不起作用,fgets 从文件流中读取一定数量的字节到缓冲区

于 2011-04-01T02:09:24.587 回答