【发布时间】:2014-05-08 01:38:33
【问题描述】:
我正在编写一个基于 Linux 操作系统(我使用的是 Ubuntu 12.04)上的 C/C++ RPC 的程序来创建点对点分布式聊天。为了抱怨一些项目请求,我需要执行 fork()。在父进程继续其流程之前,我需要等待子进程死亡:问题出现了。
每个对等点由客户端和服务器组成(出现问题的地方)。情况的一般概述可能是:
通用的“client1”向“server2”发送ping消息,“server2”以pong消息应答;同时,“client2”向“server1”发送 ping 消息,该消息以 pong 消息进行应答。
当我运行代码时,孩子会做它必须做的事情,但父母永远不会检测到它的孩子死了。
这里我放了一小段很长的服务器端代码
int *chatline_0_svc(struct message *msg, struct svc_req *req)
{
静态 int 结果 = 1;
.......
switch(msg->msg_type)
{
.......
case ping:{
int status;
pid_t pidfork = fork();
if(pidfork == 0)
{
//CHILD
cout << "CHILD " << getpid() << endl;
}
else
{
waitpid(pidfork, &status, 0);
cout << "PARENT" << endl;
.......
}
break;
}
.......
}
cout << "PROCESS " << getpid() << endl;
return &result;
}
Peer1 的输出是:
.......
儿童 7320
过程 7320
......
Peer2 的输出是:
.......
儿童 7319
过程 7319
......
有人知道为什么子进程似乎总是活跃的吗?
谢谢。
【问题讨论】:
标签: c++ linux fork rpc child-process