我在Ubuntu 12.04 LTS上用c ++编写这个,我明确没有使用任何BOOST库。 我想要做的是拥有一个父进程,同时运行两个或多个子进程。
父进程的作用类似于事件侦听器和任务调度程序。孩子们处理父母告诉他们的任务;这些任务是系统调用,父母在完成时并不关心。
到目前为止我成功完成的是
接下来我需要知道的是如何在孩子还在运行时恢复孩子并返回父母。
所以我的问题是,父母和孩子能够以这种方式同时安全地运行吗? (父母不在乎孩子恢复后的行为)
一般来说,我需要做什么才能在暂停()后恢复子进程?
下面的是分配子项的构造函数
childManager(int number_of_children, pid_t parent) {
int i=0;
while(number_of_children--) {
if(parent == getpid())
{
this->parent = parent;
children.push_back({++i,_IDLE,fork()});
if(parent != getpid()) pause();
}
}
}
答案 0 :(得分:1)
我在这里看到的唯一问题是
一般来说,我需要做什么才能在暂停()后恢复子进程?
发送一个信号,其动作是执行信号捕捉功能或终止该过程。例如:
kill(children[i], SIGUSR);
尽管如此,这是一种不太理想的方式。您可以很容易地让孩子在管道上阻塞,等待父母告诉他们做某事。或大约30个不涉及信号的类似事物。
答案 1 :(得分:0)