#include "stdio.h"
#include "errno.h"
#include <fcntl.h>
int GetRandom(void *buf, int bytes)
{
int fd;
int ret;
fd = open("/dev/urandom", O_RDONLY| O_NONBLOCK);
if(-1 == fd)
{
printf("open urandom err!\n");
return -1;
}
while(0 != bytes && 0 != (ret=read(fd,buf,bytes)))
{
if(-1 == ret)
{
if(errno == EINTR || errno == EAGAIN)
{
continue;
}
perror("read error!!!");
close(fd);
return -1;
}
bytes -= ret;
buf += ret;
}
close(fd);
return 0;
}
int main(void)
{
int ret;
int i;
unsigned char randomBuf[1024];
ret = GetRandom(randomBuf, sizeof(randomBuf));
printf("GetRandom, return: %d\n", ret);
printf("print %d value:\n", (int)sizeof(randomBuf));
for(i=0; i<sizeof(randomBuf); i++)
{
if(!(i%16))
printf("\n");
printf("0x%02x ", randomBuf[i]);
}
printf("\n");
return ret;
}
linux_随机数
最新推荐文章于 2024-08-23 16:52:52 发布