linux下,需要子进程启动别的进程跟父进程通信,如何实现?

xiaoguailong3 2019-09-24 06:00:32
需求:写一个服务器A,通过配置启动N个进程B,需要进程A跟进程B通信,进程B如果异常退出,进程A可以启动进程B。。
windows下已经实现了,linux下如果实现呢?
进程B的写:cout
进程B的读:getline

如何跟B进行通信呢,在B不修改的情况下

伪码:
bool CProcess::Execute(const string& Command)
{
bool bRet = true;
m_pid = -1;
int pipeFDs[2];
if (pipe(pipeFDs) < 0)
{
LOG_ERROR << "pipe err!!" << endl;
}

m_pid = fork();
if (m_pid == 0)
{
LOG_DEBUG << "child process :" << Command.c_str() << endl;
//子进程
if (execl(Command.c_str(), "test", NULL) < 0)
{
LOG_ERROR << "execl faild!!" << endl;
}
exit(0);
}
else if (m_pid == -1)
{
//出错
LOG_ERROR << "fork err!!" << endl;
}
else
{
m_hPipes[Read] = pipeFDs[Read];
m_hPipes[Write] = pipeFDs[Write];
//父进程
LOG_DEBUG << "parent process" << endl;
}

return bRet;
}
...全文
75 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧