这个问题很快:)。我知道srand()
用于播种随机数生成器,以防止生成相同的随机数序列。同样,我知道getpid()
“应返回调用进程的进程ID”。
(http://pubs.opengroup.org/onlinepubs/009695399/functions/getpid.html)
由于每次运行我的程序(生产者和消费者通过共享内存进行通信的程序)时进程 ID 最终都会不同,因此 PID 也会不同,从而提供完美的种子。我为随机数设置了一个范围rand() % (100-1) + 1
。
是否srand(getpid())
以特定格式提供随机数?
为了完整起见,这是我的查询涉及的代码部分:
srand(getpid());
while(x == 0)
{
if(*randNum == 101)
{
*randNum = rand() % (100 - 1) + 1;
*pidNum = getpid();
printf("priority: %d Process ID: %d \n", *randNum, *pidNum);
x = 1;
}
else
{
*randNum++;
*pidNum++;
}
}