侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 238 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

getentropy函数用法详解

noerror
2022-11-09 / 0 评论 / 0 点赞 / 13 阅读 / 421 字 / 正在检测是否收录...

getentropy函数用法详解

getentropy函数简介

  • 头文件包含
#include <unistd.h>
  • 函数定义
int getentropy(void * buffer , size_t  length );

getentropy函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘getentropy’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <unistd.h>

getentropy函数详细描述

getentropy ()函数从buffer 指向的位置开始将length字节的高质量随机数据写入缓冲区。length参数的最大允许值是256。
对getentropy ()的成功调用总是提供所请求的熵字节数。

getentropy函数返回值

如果成功,该函数返回零。出错时,返回-1,并适当地设置errno。

getentropy函数错误码

  • EFAULT buffer和length指定的部分或全部缓冲区不在有效的可寻址内存中。
  • EIO length大于256。
  • EIO 尝试用随机数据覆盖buffer时出现不明错误。
  • ENOSYS 这个内核版本不实现实现这个函数所需的getrandom (2)系统调用。

getentropy函数其他说明

getentropy ()函数是使用getrandom (2)实现的
尽管glibc包装器使getrandom (2)成为一个取消点,但getentropy ()不是一个取消点。
getentropy ()也在<sys/randomh> 中声明(不需要定义特性测试宏来从该头文件中获取声明。)
如果系统刚刚启动,内核还没有收集到足够的随机性来初始化熵池,那么对getentropy ()的调用可能会阻塞。在这种情况下,即使信号被处理,getentropy ()也会保持阻塞,并且只有在熵池被初始化后才会返回。

0

评论区