Следующий код выполняет два дочерних процесса, выполняющихся параллельно от одного родительского процесса в C ++?

0

Я прочитал, что fork может использоваться для запуска двух дочерних процессов, выполняемых параллельно из одного родительского процесса в C++, как указано в разделе Как создать два дочерних процесса, выполняемых параллельно из одного родительского процесса в 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;
}
  • 0
    Прочитайте Advanced Linux Programming, в нем есть несколько глав, чтобы ответить на ваш вопрос. Обратите внимание на то, что система (3) является fork -ную затем execve -ную с /bin/sh -c процесс
Теги:
parallel-processing
fork

1 ответ

0

Заголовок вопроса подразумевает, что вы думаете, что этот код создает два дочерних процесса и один родительский процесс для всего трех процессов, в то время как в теле вашего вопроса подразумевается, что вы считаете, что есть один родительский и один дочерний процесс. Мне непонятно, на кого вы действительно верите.

Конечно: этот код создаст один дополнительный дочерний процесс, который выполняет параллель с родителем, в общей сложности два процесса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню