草庐IT

EXIT_FAILURE

全部标签

c++ - 为什么 `std::exit` 没有按预期触发析构函数?

#include#include#include#includeusingnamespacestd;usingnamespacestd::literals;structA{intn_=0;A(intn):n_(n){cout我的编译器是clang5.0和-std=c++1z。输出如下:A:1A:2A:4A:5A:3~A:5~A:2~A:4~A:1注意没有~A:3,表示对象Aa3没有被破坏。但是,根据cppref:std::exitcausesnormalprogramterminationtooccur.Severalcleanupstepsareperformed:Thedestru

c++ - 什么时候 abort() 优于 exit()?

我知道两者之间的区别。一件值得注意的事情是abort()发送SIGABRT信号,因此当您的软件依赖它们时它可能是相关的。但是对于典型的应用程序,exit()似乎是abort()更安全的版本......?使用abort()代替exit()是否还有其他顾虑? 最佳答案 如果用户启用了核心转储,则使用abort将转储核心。因此,根据经验,如果您不确定出了什么问题,我会使用abort,以致获得有用信息的唯一方法是分析核心转储。如果您可以从任何给定点安全地exit,并且不需要核心转储,那么exit是一种更好的方法。

c++ - 元编程 : Failure of Function Definition Defines a Separate Function

在thisanswer我根据类型的is_arithmetic属性定义了一个模板:templateenable_if_t::value,string>stringify(Tt){returnto_string(t);}templateenable_if_t::value,string>stringify(Tt){returnstatic_cast(ostringstream()dypsuggests而不是类型的is_arithmetic属性,是否为类型定义to_string是模板选择标准。这显然是可取的,但我不知道怎么说:Ifstd::to_stringisnotdefinedthenu

c++ - 我必须对 "exit"bool 变量使用 atomic<bool> 吗?

我需要设置一个标志让另一个线程退出。那个其他线程不时检查退出标志。我是否必须对标志使用atomic或仅使用纯bool就足够了,为什么(举例说明如果我使用纯bool可能会出现什么问题)?#includeboolexit=false;voidthread_fn(){while(!exit){//dostuffif(exit)break;//dostuff}}intmain(){autof=std::async(std::launch::async,thread_fn);//dostuffexit=true;f.get();} 最佳答案

c++ - 如何处理clang中的 "exit-time destructor"警告?

在我的C++11代码中,我在以下情况下收到clang警告“声明需要退出时析构函数”:staticconststd::mapmymap={{1,{"A","B","C"}},{2,{"D","E","F"}}};据我了解,Google需要一个“退出时析构函数”以确定性的方式销毁main()和静态变量,以防止由于“已发布的变量”而导致退出时崩溃。那正确吗?有人能解释得更好吗?另外:我能做些什么(我不想禁用警告)?上面的代码只在一个线程的上下文中使用。看起来这就是Chromium处理这些情况的方式;这也是我的情况的正确方法吗?#defineCR_DEFINE_STATIC_LOCAL(typ

Mongodb 无法在 Ubuntu 上运行 -> mongod.service : Failed with result 'exit-code'

我按照本教程安装了mongodbhere,在安装过程中没有错误,但是当我尝试使用此命令启动mongod服务器时sudosystemctlstatusmongodb.●mongodb.service-High-performance,schema-freedocument-orienteddatabaseLoaded:loaded(/etc/systemd/system/mongodb.service;enabled;vendorpreset:Active:failed(Result:exit-code)sinceRab2016-06-0118:04:20MYT;4sagoProcess

Mongodb 无法在 Ubuntu 上运行 -> mongod.service : Failed with result 'exit-code'

我按照本教程安装了mongodbhere,在安装过程中没有错误,但是当我尝试使用此命令启动mongod服务器时sudosystemctlstatusmongodb.●mongodb.service-High-performance,schema-freedocument-orienteddatabaseLoaded:loaded(/etc/systemd/system/mongodb.service;enabled;vendorpreset:Active:failed(Result:exit-code)sinceRab2016-06-0118:04:20MYT;4sagoProcess

unit-testing - 在 Go 中使用覆盖信息测试 os.Exit 场景 (coveralls.io/Goveralls)

这个问题:Howtotestos.exitscenariosinGo(以及其中投票最高的答案)阐述了如何在go中测试os.Exit()场景。由于os.Exit()不容易被拦截,所以使用的方法是重新调用二进制文件并检查退出值。此方法在slide23onthispresentation中进行了描述。作者:AndrewGerrand(围棋团队的核心成员之一);代码很简单,全文转载如下。相关的测试和主文件看起来像这样(注意这对文件单独是一个MVCE):packagefooimport("os""os/exec""testing")funcTestCrasher(t*testing.T){ifo

go - 执行 os.Exit(1) 时如何禁用 "exit status 1"

在我的一个go项目中,我运行os.Exit(1)并打印出exitstatus1。如何禁用此消息的打印? 最佳答案 要禁用消息,请不要使用gorun。gorun是一种方便地将一个或多个go文件编译到临时位置、执行二进制文件和清理的工具。您的可执行文件在子进程中运行,go工具正在为您报告退出状态。 关于go-执行os.Exit(1)时如何禁用"exitstatus1",我们在StackOverflow上找到一个类似的问题: https://stackoverflo

error-handling - 在 Golang 中运行 exec.Command 时如何调试 "exit status 1"错误

当我运行下面的代码时:cmd:=exec.Command("find","/","-maxdepth","1","-exec","wc","-c","{}","\\")varoutbytes.Buffercmd.Stdout=&outerr:=cmd.Run()iferr!=nil{fmt.Println(err)return}fmt.Println("Result:"+out.String())我收到此错误:exitstatus1但是这对于调试错误的确切原因没有帮助。如何获取更详细的信息? 最佳答案 解决方案是使用Command对