当前位置: 技术问答>linux和unix
多进程中使用队列queue为什么会core了呢?
来源: 互联网 发布时间:2016-07-17
本文导语: 我首先定义了一个queue 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 0 ) { child_proc_num++; } else if(pid==0) { execl("./client","client",cmd_ary[1].c_str(),(char...
我首先定义了一个queue 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 0 )
{
child_proc_num++;
}
else if(pid==0)
{
execl("./client","client",cmd_ary[1].c_str(),(char *)0
exit(0);
}
else
printf("error:fork failuren");
}
return 0;
}
这样运行后为什么会产生core文件呢?
我把入队列那段加到pid==0里也不行?
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 0 )
{
child_proc_num++;
}
else if(pid==0)
{
execl("./client","client",cmd_ary[1].c_str(),(char *)0
exit(0);
}
else
printf("error:fork failuren");
}
return 0;
}
这样运行后为什么会产生core文件呢?
我把入队列那段加到pid==0里也不行?
|
把queue放在结构体外面,系统构造这个变量时编译器会调用它的构造函数。
你把malloc改为new试试看,因为malloc不会调用queued的构造函数,问题可能处在这里。
代码改动:
pOper_Node=(OPER_NODE*)malloc(sizeof(OPER_NODE)*5);
改为pOper_Node=new OPER_NODE[5];
你把malloc改为new试试看,因为malloc不会调用queued的构造函数,问题可能处在这里。
代码改动:
pOper_Node=(OPER_NODE*)malloc(sizeof(OPER_NODE)*5);
改为pOper_Node=new OPER_NODE[5];
|
|
"这句就core掉了",是什么意思?