这是我的代码C++的随机数,等待父母所有的孩子当过程
#include <iostream>
#include <string>
#include <ctime>
int main()
{
for (int i=0;i<3;i++) {
if((pid()==fork())==0){
break;
}
}
if(pid==0) {
// son process
srand(time(NULL));
int r = rand()%4+1;
cout<<"pid:"<<getpid() <<"num": "<<r<<endl;
}
else{
//parent process
}
}
我有问题trandom数相同的全部过程,我怎么可以重置兰特()? 我已经试图做不同的srand()到每个进程它不起作用。
'如果((PID()==叉())== 0)' - 这个构造很有趣......我怀疑这个代码将编译。 –
如果你想让它们得到不同的随机数,你需要在每个进程中给'srand()'一个不同的参数。由于所有进程同时启动,'time(NULL)'将是相同的。 – Barmar
你应该只问一个问题,而不是3个不同的问题。 – Barmar