Я прочитал, что 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;
}
Заголовок вопроса подразумевает, что вы думаете, что этот код создает два дочерних процесса и один родительский процесс для всего трех процессов, в то время как в теле вашего вопроса подразумевается, что вы считаете, что есть один родительский и один дочерний процесс. Мне непонятно, на кого вы действительно верите.
Конечно: этот код создаст один дополнительный дочерний процесс, который выполняет параллель с родителем, в общей сложности два процесса.
fork
-ную затемexecve
-ную с/bin/sh -c
процесс