ファイル記述子fd
を開いて /dev/random のその他のサニティ チェックを行った後、デバイスから読み取り可能なバイト数を読み取ろうとしています。これにより、プログラムで必要な場合にこの量を引き出すことができます。
私の基本的なコードはこれです:
if (fd = open("/dev/random", O_RDONLY) < 0) {
perror("open");
return 1;
}
...
if(ioctl(fd, FIONREAD, &n) < 0) { //file descriptor, call, unsigned int
perror("ioctl");
return 1;
}
printf("%d bytes available for reading.\n", n);
return 0;
どのようなシナリオ (必要な場合は root または通常のユーザー) であっても、常に読み取り可能な 0 バイトを返します。
これは、デバイスから取り出すことができるものを取得する方法であると以前に提案されましたが、プログラムで発生する可能性のある問題や障害によって、常にゼロが返されることを知っていますか? 私がやりたいことを行う他の方法を知っていますか?