- 定义信号处理函数
- 设置信号处理
struct sigaction sa;// 清空信号掩码,处理信号时不阻塞其他信号 sigemptyset(&sa.sa_mask);// 设置信号处理函数 sa.sa_handler = signal_handler;// 设置信号处理标志(可选) sa.sa_flags = SA_RESTART; // 自动重启被信号中断的系统调用// 应用信号处理设置 sigaction(SIGINT, &sa, nullptr);
经过这两个步骤,当unix内核发出信号的时候,就可以进行捕获处理。
由于信号是异步发生,当qt中使用捕捉信号时,需要和QSocketNotifier结合使用,保证线程安全。
- 创建套接字。
- 创建QSocketNotifier对象,对套接字某个行为进行监听。
QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr)
-
创建信号与槽的连接,当监听对象行为发生变化时,发出activated信号。