【发布时间】:2016-12-04 17:33:01
【问题描述】:
我已经制作了简单的内核模块。
void cb_funct(unsigned long arg) // callback function.
{
int rand;
get_random_bytes(&rand, sizeof(rand));
rand%=250;
seq_printf(m, "random number : %d\n", rand);
...
}
我使用 seq_printf 函数打印出 rand 变量。
cb_funct 函数被调用五次。
下面是结果。
随机数:66
随机数:-5
随机数:135
随机数:178
随机数:-42
为什么会打印出负变量?
如何在linux中使用get_random_bytes函数?
【问题讨论】:
-
可能是因为
rand包含一个负数。 -
哦,那个函数也可以生成负数。感谢您的评论。
-
好吧,它会生成随机字节。
int是有符号类型,因此通过用随机字节填充它,我希望会出现负值。 -
添加到@melpomene 的评论,也许 printf rand 为 unsigned int?作为 "%u" 而不是 "%d",并将 rand 声明为 "unsigned"。