#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i =10;
/* initialize random seed: */
srand(time(NULL));
while(i--){
if(fork()==0){
/* initialize random seed here does not make a difference:
srand(time(NULL));
*/
printf("%d : %d\n",i,rand());
return;
}
}
return (EXIT_SUCCESS);
}
打印相同的(每次运行时不同)数字10次 - 期望是什么? 我有一段更复杂的代码,其中每个分叉进程依次运行 - 没有差异
^ (getpid()<<16)
的底层操作是什么吗? - Soner from The Ottoman Empiretime(NULL)
确保您每秒获得不同的值。(getpid()<<16)
增加了每个进程获得不同值的可能性,因为进程 ID 通常不会那么快地被重新使用。 - David Schwartz