我正在使用std :: unique_ptr来管理一些内存。当我的进程正常退出时,这可以正常工作,因为我可以看到相关的构造函数和析构函数被调用。但是,当使用SIGTERM终止进程时,我没有看到析构函数被调用。当进程通过信号终止时,这是std :: unique_ptr的预期行为吗?有没有办法解决这个问题?提前谢谢!
答案 0 :(得分:2)
这是预期的:默认信号处理程序将在您的进程中有效地调用exit()
,这将终止该进程。为了解决这个问题,你应该安装一个信号处理程序,并在收到信号时采取适当的措施。