【发布时间】:2017-05-10 15:31:52
【问题描述】:
我有一个创建使用std::thread 对象同时执行工作的程序。我正在从 bash 脚本调用程序,如果程序没有以EXIT_SUCCESS 终止,我想停止脚本。在以下情况下,我遇到了一种相当不直观的行为:其中一个线程抛出异常(因此调用std::terminate),导致程序完全终止。然而,程序的返回码是EXIT_SUCCESS(而不是一些错误代码,我希望这样)。这是为什么呢?
我知道在很多情况下使用std::thread 并不是一个聪明的主意,我计划转而使用std::async(或类似的),但目前我对快速解决这个问题很感兴趣。
【问题讨论】:
-
这是你的程序。您可以完全控制其退出状态。
-
你能展示 MCVE 吗?
-
应该这样做(
std::terminate调用std::abort):“实现定义的状态返回到主机环境,表明执行不成功。”我们需要@987654321 @+ 平台详情。见:en.cppreference.com/w/cpp/utility/program/abort
标签: c++ multithreading bash c++11 exit-code