我正在从管理器进程中分叉多个进程。然后我想为这些分叉的进程创建一个随机端口号来监听。但是,当我随机播种并获得一个随机数时,我会在三个进程之间获得相同的数字。例如:
经理:
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;
}
我曾尝试在经理处播种,然后在该过程中尝试 rand,但是当我可以 rand 时,我仍然遇到相同的问题。除了时间之外,我可以用任何东西播种,并且仍然可以获得良好的随机结果。