我正在创建一个优先级列表,在Unix环境中由分叉进程填充PID。我找到了下面的代码段,但我不明白rand和srand(getpid())正在完成什么。如何通过使用随机数字创建“优先级列表”?什么是srand(getpid())和rand()在下面做什么?
我知道rand() % (100 - 1) +1;
为您提供了一个随机数,但为什么代码的作者在减去它后会加1?
for(B = 0; B < noToCreate; B++)
{
pid = fork();
if(pid == -1)
{
perror("Error forking");
exit(1);
}
else if(pid > 0)
{
wait(0);
}
else
{
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++;
}
}
exit(0);
}
} /* Closes main for loop */
谢谢你们! :)
不清楚你的问题是什么。你的头衔声称你在问'srand'和'rand',如果是的话,你应该首先查看'man'页面。然后问题文本看起来更像是想知道表达式'x%(100 - 1)+ 1'的优先规则。 –