【发布时间】:2012-11-18 02:51:00
【问题描述】:
我正在从一个管理器进程中分叉多个进程。然后我想为这些分叉的进程创建一个随机端口号来监听。但是,当我随机播种并获得一个随机数时,我会在三个进程之间获得相同的数字。例如:
经理:
int main(){
for(int i = 0; i < rCount; i++){
pid_t pid = fork();
if (pid == 0) {// child
execl(ROUTERLOCATION,"",NULL); //create router process
}
else { // parent
}
}
}
路由器:
int main(){
randomPort();
}
void randomPort(){
srand(time(NULL));
int host_port = rand() % 99999 + 11111;
cout << houst_port << endl;
}
我曾尝试在 manager 中播种,然后在该过程中尝试 rand,但是当我可以 rand 时,我仍然遇到相同的问题。除了时间之外,我可以播种任何东西,并且仍然可以获得良好的随机结果。
【问题讨论】:
-
尝试时间加进程号。
-
这是个好主意。我想接受它,但这是一个评论。如果您需要代表,请将其添加为答案,我会接受。