进程被杀死时智能指针的行为

时间:2017-02-17 21:21:57

标签: c++ linux c++11 operating-system

我正在使用std :: unique_ptr来管理一些内存。当我的进程正常退出时,这可以正常工作,因为我可以看到相关的构造函数和析构函数被调用。但是,当使用SIGTERM终止进程时,我没有看到析构函数被调用。当进程通过信号终止时,这是std :: unique_ptr的预期行为吗?有没有办法解决这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:2)

这是预期的:默认信号处理程序将在您的进程中有效地调用exit(),这将终止该进程。为了解决这个问题,你应该安装一个信号处理程序,并在收到信号时采取适当的措施。