我想问一下用户注销时调用的信号是什么?我有一个 Qt gui 应用程序,它具有 SIGTERM
和 SIGHUP
信号的处理程序。该应用程序还有自己的关闭事件处理程序,因此用户无法通过单击“X”来关闭它。问题是,当用户注销时,ubuntu 会挂起(任务栏上的图标消失,但进程继续运行)并且不允许用户注销,因为(imo)它等待进程终止。当我使用 kill -15 'myapp'
命令时,应用程序会按预期正常关闭,因此问题不应出现在我的处理程序中。
static int setupHandlers(){
struct sigaction hup,term;
hup.sa_handler = signalHandler;
sigemptyset(&hup.sa_mask);
hup.sa_flags = 0;
if (sigaction(SIGHUP, &hup, 0) > 0){
return 1;
}
term.sa_handler = signalHandler;
sigemptyset(&term.sa_mask);
if (sigaction(SIGTERM, &term, 0) > 0){
return 2;
}
return 0;
}
signalHandler
只是调用 exit(0)
(也尝试过 _exit(0)
和 abort()
)
最佳答案
您可以处理 3 个标准终止信号 - SIGINT、SIGQUIT 和 SIGTERM。尝试订阅其中的每一个并查看。
关于c++ - 注销时应用程序不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27038977/