多进程中使用队列queue为什么会core了呢?
我首先定义了一个queue<int> q_client_num;
int start_client(string s_cmd)
{
if(s_cmd=="") return 0;
int client_num=atoi(cmd_ary[1].c_str());
for (int i=1;i<=client_num;i++)
{
//写锁
pthread_rwlock_wrlock(&pOper_Node[i].lock);
int index=i%5;
printf("===%d===\n",index);
pOper_Node[index].q_client_num.push(1); //顾客入队列
//解锁
pthread_rwlock_unlock(&pOper_Node[i].lock);
pid_t pid=fork();
if (pid > 0 )
{
child_proc_num++;
}
else if(pid==0)
{
execl("./client","client",cmd_ary[1].c_str(),(char *)0
exit(0);
}
else
printf("error:fork failure\n");
}
return 0;
}
这样运行后为什么会产生core文件呢?
我把入队列那段加到pid==0里也不行?