繁体   English   中英

Linux中的进程:让每个子进程进入随机的秒数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM