Итак, у меня есть короткая программа, которая должна запустить несколько других программ и ждать их завершения.
В настоящее время я делаю это в моем основном методе, как это:
// 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?
Любые другие советы приветствуются!
Синхронный способ состоял бы в том, чтобы запустить службу в функции блокировки и вернуть значение выхода. Один за другим вы запускаете службы и ждете их окончания.
Асинхронный:
Все сервисы могут работать параллельно. Вы можете создавать темы и присоединиться к ним. Поэтому, когда они заканчивают, вы получаете выходные значения.
Кроме того, вы можете использовать fork () и использовать каналы, чтобы отец мог давать команды различным дочерним элементам (запускать разные программы).
Вы можете создать поток для каждой «другой программы», которую вы хотите запустить. Однако это может работать только в том случае, если задание каждой «другой программы» не зависит от результатов или переменных других «других программ».