【发布时间】:2013-07-26 11:32:33
【问题描述】:
我希望在 Unix 环境中创建一个包含来自分叉进程的 PID 的优先级列表。我找到了以下代码部分,但我不明白 rand 和 srand(getpid()) 正在完成什么。如何通过使用随机数创建“优先级列表”?
我知道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的优先规则。