确定哪个信号导致EINTR?

我正在运行一个epoll循环,有时我对epoll_wait的调用返回-1,并将errno设置为EINTR。 有时,我想要结束epoll循环,就像SIGTERM或SIGINT一样。 但是我用-pg标志编译了这个代码,因此引发了周期性的SIGPROF(27)信号,停止了我的循环。

那么……是否可以打开百分号以便我可以确定何时退出而不是继续? 我想避免使用全局来跟踪最近发出的信号的任何事情。

在SIGTERM和SIGINT上添加信号处理程序。 在这些处理程序中,您可以设置一个在主epoll循环中检查的变量