从主进程执行多个进程

时间:2012-10-26 02:49:55

标签: c++ exec fork control-flow

我想从一个主进程创建多个进程。我知道我想使用exec系列中的一个函数,但它似乎没有像我想要的那样预先形成。似乎exec()是一个阻塞调用,或者我可能只是错误地使用它。无论如何,代码:

const char* ROUTERLOCATION = "../../router";
int main(int argc, char** argv) {
  manager manager;
  vector<string> instructions = manager.readFile(argv[1]);
  ...
  //file gives me the number of proceses i want to spawn and that value goes in 
  //rCount
  for(int i = 0; i < rCount; i++){
    cout << "creating:" << i << endl;
    execl(ROUTERLOCATION, "",NULL);
    }
}

我看到的输出是:

creating:0
HI!!!

然后一切都优雅地退出。我是否可以使用execl()生成多个流程?

另外,我想与每个进程进行通信,因此我不想在这些进程运行时阻塞。

2 个答案:

答案 0 :(得分:2)

您需要在主进程中fork,在您的子进程中调用execl。 (exec系列函数用新进程替换当前进程映像,因此for循环永远不会完成。)

答案 1 :(得分:1)

调用exec()表示您当前的程序不再存在。您可能希望使用fork()创建一个新流程,然后在其中调用exec(),以便exec()替换您的新流程,并且您的主流程仍可按预期运行。

示例:

pid_t pid = fork();
if (pid == 0) {// child
    execl();
} else { // parent
}