gpt4 book ai didi

c++ - fork 进程之间的随机数相同

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:53:22 26 4
gpt4 key购买 nike

我正在从一个管理器进程中 fork 出多个进程。然后我想为这些 fork 进程创建一个随机端口号来监听。但是,当我随机播种并获得随机数时,我在三个进程之间得到相同的数字。例如:

经理:

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;
}

我试过在经理那里做种子,然后在这个过程中尝试随机数,但我仍然遇到同样的问题,当我可以随机数时得到相同的数字。除了时间之外,我可以用任何东西播种,并且仍然得到很好的随机结果吗?

最佳答案

由于每个进程的时间都相同,因此您需要保证进程之间不同的另一个输入。进程号对此很有效。通过将进程号添加到时间来将两者结合起来。

关于c++ - fork 进程之间的随机数相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13437023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com