관리자 프로세스에서 여러 프로세스를 포킹하려고합니다. 그런 다음이 포크 된 프로세스가 수신 대기하는 임의의 포트 번호를 만들고 싶습니다. 그러나 무작위로 시드하고 난수를 얻으면 세 가지 프로세스간에 동일한 수를 얻습니다. 예를 들면 :분기 된 프로세스 사이의 임의의 숫자가 동일합니다.
관리자 :
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;
}
나는 파종은 관리자에 시도, 후 공정에서 랜드를 시도,하지만 난 여전히 점점 같은 문제가 내가 할 수있을 때 같은 번호. 시간 외에도 다른 것을 뿌려도 좋은 결과를 얻을 수 있습니까?
시간과 프로세스 번호를 비교해보십시오. –
이것은 좋은 생각입니다. 나는 그것을 받아들이고 싶지만 그것은 논평이다. 담당자를 원하면 답변으로 추가하면 받아 들일 것입니다. – nook