下面的代码是否运行了两个从C ++中的单个父进程并行执行的子进程?

时间:2015-01-05 21:00:19

标签: c++ linux parallel-processing fork

我已经读过,fork可以用来运行两个并行执行的子进程,它来自C ++中的单个父进程,如How to create two child process executing parallel from a single parent process in C++?中所述;但是,没有例子可以创建我自己的实验。因此,我使用了以下代码,但我不确定这两个进程是否并行执行。此外,由于任务是从两个设备捕获数据,因此需要在不同的终端中运行它们,而我唯一想到的就是使用以下行:

system("xterm -e ./task1"); 

然而,一旦执行了以下输出就是 sh: 1: term: not found

我将非常感谢您在任何可以提供的建议或指导中的时间

#include <iostream>
#include <stdlib.h> 
using namespace std;

int main(int argc, char **argv)
{

  cout << "--beginning of program" << endl;
    int counter = 0;
    pid_t pid = fork();

    if (pid == 0)
    {
        // child process
        system("./task1");
cout << "child process" << endl;
    }
    else if (pid > 0)
    {
        // parent process
                system("./task2");
cout << "parent process" << endl;
    }
    else
    {
cout << "fork() failed!\n" << endl;
        return 1;
    }
    cout << "--end of the program" << endl;
    return 0;
}

1 个答案:

答案 0 :(得分:0)

问题标题意味着您认为此代码创建了两个子进程和一个父进程,总共三个进程,而您的问题正文暗示您认为有一个父进程和一个子进程。我不清楚你真正相信哪一个。

确定:此代码将创建一个与父项并行运行的额外子进程,总共有两个进程。