Лучшие практики C ++ для запуска других программ изнутри 'main' - PullRequest
0 голосов
/ 13 июня 2018

Итак, у меня есть короткая программа, которая должна запустить несколько других программ и ждать, пока они завершатся.

В настоящее время я делаю это в моем основном методе так:

// Connect to the service
cout << "Starting the service..." << endl;
status = system((SCRIPT_DIR + "/my_service").c_str());
if (WIFEXITED(status)) {
    cout << "Started service successfully" << endl;
} else {
    cerr << "Failed to start the service." << endl;
    return (EXIT_FAILURE);
}

В моем основном это выглядит как-то грубо, потому что мне приходится делать это несколько раз;это где это должно быть сделано?или я должен разбить его на класс или функцию, чтобы у меня не было всей этой проверки ошибок в main?

Любые другие советы также приветствуются!

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Вы можете создать поток для каждой «другой программы», которую вы хотите запустить.Однако это может работать только в том случае, если задание каждой «другой программы» не зависит от результатов или переменных других «других программ»

0 голосов
/ 13 июня 2018

Синхронным способом будет запуск службы в функции блокировки и возврат значения выхода.Один за другим вы запускаете службы и ждете их завершения.

Асинхронно:

Все службы можно запускать параллельно.Вы можете создавать темы и присоединиться к ним.Поэтому, когда они заканчивают, вы получаете выходные значения.

В качестве альтернативы вы можете использовать fork () и использовать каналы, чтобы отец мог давать команды различным дочерним элементам (запускать разные программы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...