[英]Processes in Linux: Getting every child process to sleep a Random number of seconds
每当新进程启动时,我想使一个变量(属于某个进程)获得一个新的随机值。
我需要这种随机生成,以使创建的每个进程随机进入睡眠秒数。 在程序开始时,我使用了srand(time(NULL))
,在该过程将要运行的函数中,我使用了
int sleeptime = rand() % 16 + 5; //that's because I need values from 5 to 20
int sleeptime = rand() % 16 + 5; //that's because I need values from 5 to 20
。
我已经尝试实现这样的事情,但是我发现对于每个进程,变量的值都是相同的。
我认为,如果我以srand(..)作为当前时间(以毫秒为单位)(各个过程开始的时间)作为参数,我将获得随机值。 问题是我没有为此找到任何信息。 在不同页面上建议的唯一内容是众所周知的: srand(time(NULL));
(其中time(NULL)返回当前时间,以秒为单位)。
能否请您建议我一些实施此方法的方法? 先感谢您。
如果您使用的是Linux,则还可以通过从/dev/random
读取来为PRNG设置种子。 像这样:
void seedprng() {
unsigned i;
FILE* f = open("/dev/random", "rb");
if (f) {
fread(&i, sizeof(i), 1, f);
fclose(f);
}
else{
printf("falling back to time seeding\n");
i = (unsigned)time(NULL);
}
srand(&i)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.