我正在創建一個優先級列表,在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'的優先規則。 –