如何让一个程序Ctrl c时执行析构,释放资源
时间: 2023-05-16 07:06:52 浏览: 183
可以使用 signal 函数来捕获 Ctrl+C 信号,然后在信号处理函数中执行析构函数和释放资源的操作。具体实现可以参考以下代码:
```c++
#include <iostream>
#include <csignal>
class Resource {
public:
Resource() {
std::cout << "Resource created" << std::endl;
}
~Resource() {
std::cout << "Resource destroyed" << std::endl;
}
};
Resource* res = nullptr;
void signalHandler(int signum) {
if (res != nullptr) {
delete res;
res = nullptr;
}
exit(signum);
}
int main() {
res = new Resource();
signal(SIGINT, signalHandler);
while (true) {
// do something
}
return 0;
}
```
在上面的代码中,我们定义了一个 Resource 类来模拟需要释放的资源。在 main 函数中,我们创建了一个 Resource 对象,并使用 signal 函数来捕获 Ctrl+C 信号。当捕获到信号时,会调用 signalHandler 函数,在该函数中执行析构函数和释放资源的操作。最后,我们在主函数中使用一个无限循环来模拟程序的运行。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)