'main' 中 运行 其他程序的 C++ 最佳实践
C++ best practices for running other programs from within 'main'
所以我有一个简短的程序,它必须 运行 一些其他程序并等待它们完成。
目前我在我的主要方法中这样做:
// 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);
}
我的主程序看起来有点恶心,因为我必须多次执行此操作;这是应该做的地方吗?还是我应该把它分解成一个 class 或函数,这样我就不会在 main 中进行所有这些错误检查?
也欢迎任何其他建议!
同步方式是在阻塞函数和 return 退出值中启动服务。一项一项启动服务并等待它们完成。
异步:
所有服务都可以运行并行。您可以启动线程并加入它们。因此,当他们完成时,您会检索退出值。
或者,您可以使用 fork() 并使用管道,以便让父亲向各种命令发出命令 children(启动不同的程序)
您可以为每个 'other program' 您想要 运行 创建一个线程。但是,这可能仅在每个 'other program' 的工作独立于其他 'other programs'
的结果或变量时才有效
所以我有一个简短的程序,它必须 运行 一些其他程序并等待它们完成。
目前我在我的主要方法中这样做:
// 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);
}
我的主程序看起来有点恶心,因为我必须多次执行此操作;这是应该做的地方吗?还是我应该把它分解成一个 class 或函数,这样我就不会在 main 中进行所有这些错误检查?
也欢迎任何其他建议!
同步方式是在阻塞函数和 return 退出值中启动服务。一项一项启动服务并等待它们完成。
异步:
所有服务都可以运行并行。您可以启动线程并加入它们。因此,当他们完成时,您会检索退出值。
或者,您可以使用 fork() 并使用管道,以便让父亲向各种命令发出命令 children(启动不同的程序)
您可以为每个 'other program' 您想要 运行 创建一个线程。但是,这可能仅在每个 'other program' 的工作独立于其他 'other programs'
的结果或变量时才有效