最近写了个c++项目,发现 ctrl + c 退出程序可以出发析构,但kill pid,则不会触发析构,导致现场数据丢失。 解决方案:同时捕捉以下信号。 signal(SIGINT, &完成命名空间::sigint_handler); //之前只捕获这一个信号。 signal(SIGPIPE, SIG_IGN); signal(SIGTERM, &完成命名空间::sigint_handler); 无论程序前台还是后台运行,析构函数都会被触发。且监控线程都会退出,且现场数据会被下发。 signal(SIGPIPE, SIG_IGN); signal(SIGTERM, &完成命名空间::sigint_handler); | 这两个应该是接收了 kill pid 信号。。。。。
时间: 2024-11-15 01:03:11