我用signal设置了一个SIGALRM信号处理函数timer_handler(),然后用setitime设置了100ms产生一次SIGALRM信号,此时程序运行一切正常,timer_handler()执行也正常。
但是当我用sigprocmask()阻塞SIGALRM信号(阻塞10 秒),发现timer_handler()还是每100ms执行一次,而且进程里的一个线程中的msgrcv()调用开始每100ms返回一次-1(就是被信号打断了,因为使用signal所以没有设置重启调用),我想问问有人知道是为什么吗?信号没阻塞前msgrcv()没被打断过,阻塞了反而被打断,而且信号处理函数还在执行?