所以我有一个短程序,它必须运行其他几个程序并等待它们完成。
目前,我正在我的主方法中执行此操作,如下所示:
// 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((并使用pipes,让父亲向不同的孩子发出命令(启动不同的程序(
您可以为要运行的每个"其他程序"创建一个线程。但是,仅当每个"其他程序"的作业独立于其他"其他程序"的结果或变量时,这可能才有效