多進程執行一段程序
std::vector<pid_t> pid_vector;
pid_vector.clear();
pid_t p;
int i = 0;
for (i = 0; i < process_no; i++)
{
p = fork();
if (p == 0 || p == -1)
{
break;
}
else
{
pid_vector.push_back(p);
}
}
if (p == -1)
{
exit(0);
}
else if (p == 0)
{
int ret = 0;
clock_t startTime,endTime;
startTime = clock();
ret = process_one(i);
endTime = clock();
std::cout << "----------Totle Time : " <<(double)(endTime - startTime) / CLOCKS_PER_SEC << "s" << std::endl;
return ret;
}
else
{
int status = 0;
for( std::vector<pid_t>::iterator it=pid_vector.begin();it!=pid_vector.end();)
{
pid_t tmp_p = *it;
printf("in parent, child pid = %d\n", tmp_p);
waitpid( tmp_p, &status, 0);
printf("in parent, child return = %d\n", status);
it= pid_vector.erase(it);
}
printf("父進程id=%d\n",getpid());
}