【发布时间】:2018-11-22 23:17:05
【问题描述】:
所以我有一个简短的程序,它必须运行一些其他程序并等待它们完成。
目前我在我的主要方法中这样做:
// 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 中检查所有这些错误?
也欢迎任何其他建议!
【问题讨论】:
-
那为什么不把它放在一个函数中呢?
-
把它包装在一个函数中。
-
然后从我的函数返回状态并在 main 中检查?
-
有可能出现异常。
-
看看 Poco C++ 库,它为此提供了一个很好的类,即 Poco::Process .. 你可以简单地调用一个非阻塞的 launch(...) 方法并等待使用阻塞 wait() 方法获取 std::out 和退出代码的结果。它还提供了一个 ready() 函数,您可以在状态机中进行轮询。
标签: c++ class main error-checking