确定哪个信号导致了 EINTR

Determine which signal caused EINTR?

本文关键字:EINTR 信号      更新时间:2023-10-16

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

那么......是否可以打开签名,以便我可以确定何时退出与继续?我想避免任何使用全局来跟踪最近触发的信号的事情。

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