我試圖從 getrandom() 函式中獲取亂數,但是嘗試使用它只會回傳 -1 我在下面使用的代碼:
#include<iostream>
#include <sys/random.h>
int main(){
void* d = NULL;
ssize_t size = 10;
ssize_t p = getrandom(d, size, GRND_RANDOM);
std::cout << p << std::endl;
}
uj5u.com熱心網友回復:
getrandom回傳寫入的位元組數。第一個引數是指向位元組緩沖區的指標(用隨機位元組填充),第二個引數是要寫入緩沖區的隨機位元組數。
您的回傳值 ( p)-1表示將隨機位元組寫入緩沖區時出錯。在您的情況下,此錯誤是因為您NULL作為指向要填充的緩沖區的指標傳入。
試試這個:
#include<iostream>
#include <sys/random.h>
int main(){
unsigned char random_bytes[2]; // buffer where getrandom will store the random bytes
ssize_t size = 2;
ssize_t p = getrandom((void*) &random_bytes[0], size, GRND_RANDOM);
std::cout << "First random value: " << random_bytes[0] << std::endl;
std::cout << "Second random value: " << random_bytes[1] << std::endl;
}
來源:https : //man7.org/linux/man-pages/man2/getrandom.2.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/401890.html
上一篇:如何在linux下用C/C 在特定系統時間觸發執行緒?
下一篇:運行獨立的Django運行服務器
