signalfd(2)的简介可以通过man手册查看,主要作用就是通过文件描述符就绪的方法来通知信号的到来。
#include <sys/signalfd.h>
int signalfd(int fd, const sigset_t*mask, intflags);
我有个场景,就是对于信号处理不是一次性决定的,即不是程序一开始就要把信号处理写完,中途可能会添加进去,简化代码思想如下:
int main() {
SignalPoller signalPoller;
signalPoller.signal(SIGUSR1,
[] {
printf("Receive SIGUSR1\n");
});
signalPoller.poll();
signalPoller.signal(SIGUSR2,
[] {
printf("Receive SIGUSR2\n");

这篇博客介绍了如何利用signalfd通过文件描述符的方式来处理信号通知。文中提到一个场景,即在程序运行过程中动态添加信号处理,比如在首次poll前设置SIGUSR1,poll后设置SIGUSR2。测试表明,连续发送SIGUSR1或先SIGUSR1后SIGUSR2都能正常处理,但若首次发送SIGUSR2会导致进程退出,因为默认处理行为是终止进程,而首次poll未设置处理SIGUSR2。
最低0.47元/天 解锁文章
624

被折叠的 条评论
为什么被折叠?



