为什么在调用recv系统调用时调用sigprocmask?

gct*_*gct 6 c++ linux

我有一些recv()定期调用的代码(带有MSG_DONTWAIT标志).我很好奇,因为在vtune中分析我的代码,我看到一个sigprocmask()与之关联的调用recv(),并且它占用了总时间的很大一部分来执行.我很好奇为什么recv()要打电话sigprocmask().

Jim*_*imR 0

也许因此,recv 可以判断是否生成了相关信号,否则如果所述信号被阻止,则这些信号将看不到。EAGAIN/EWOULDBLOCK 是有时使用可能被阻止的信号生成的 errno 值。你看过sigprocmask手册页吗?