当前位置: 技术问答>linux和unix
open("/dev/urandom", O_RDONLY|O_NONBLOCK) 失败,不知道具体原因是什么,谢谢
来源: 互联网 发布时间:2016-06-06
本文导语: 很简单的程序,在hpux pa 上执行总是失败,但在linux上没问题。 #include #include int main() { int fd; if ((fd = open("/dev/urandom", O_RDONLY|O_NONBLOCK)) >= 0) printf(" +++ "); return 0; } ================================= 在hppa上...
很简单的程序,在hpux pa 上执行总是失败,但在linux上没问题。
#include
#include
int main()
{
int fd;
if ((fd = open("/dev/urandom", O_RDONLY|O_NONBLOCK)) >= 0)
printf(" +++ ");
return 0;
}
=================================
在hppa上执行,返回值(fd)总是 -1, 如果去掉 O_NONBLOCK, 程序就死在那里,不往下执行。希望高人指点,谢谢
文件是存在的。
crw-r--r-- 1 root 1 0x000009 /dev/urandom
#include
#include
int main()
{
int fd;
if ((fd = open("/dev/urandom", O_RDONLY|O_NONBLOCK)) >= 0)
printf(" +++ ");
return 0;
}
=================================
在hppa上执行,返回值(fd)总是 -1, 如果去掉 O_NONBLOCK, 程序就死在那里,不往下执行。希望高人指点,谢谢
文件是存在的。
crw-r--r-- 1 root 1 0x000009 /dev/urandom
|
你的 rng 模块加载没有?
|
O_NONBLOCK 表示采用非阻塞的文件IO方法。如果打开的是一个FIFO或着是块特殊文件,要指定这个方式。
你用下面的命令查看一下那个设备的属性:
ls -al /dev/urandom
你用下面的命令查看一下那个设备的属性:
ls -al /dev/urandom
|
哦,sorry!没仔细看,你已经贴出来了,是字符设备...
那打印出来一下errno的错误信息,查看一下吧
那打印出来一下errno的错误信息,查看一下吧
|
fd = open ("/dev/random", O_RDONLY | O_NONBLOCK);
以前用过这个。
urandom就没用过了。
以前用过这个。
urandom就没用过了。
|
能不能用head -1 /dev/urandom | od .....这种方法去做啊???
|
不明白,同疑惑。。。
有没有可能是权限的问题。。。
有没有可能是权限的问题。。。