使用sigprocmask()屏蔽信号和使用信号(< signal>,SIG_IGN)忽略信号之间有区别吗?
阻止与忽视不同.您通过使用sigaction()安装SIG_IGN来忽略信号.
在内核或进程生成信号后,内核将其挂起到某些进程.一旦该过程作用在信号上,该信号就被传送到一个进程.一个进程可以阻塞一个信号,使信号处于待发状态,直到它被解除阻塞.未被阻挡的信号将立即发送.信号掩码指定哪些信号被阻塞.一个进程可以确定哪些信号正在等待.
大多数UNIX不会排列同一待处理信号的多个实例;每个信号只有一个实例可以等待.
对于待处理的信号,对SIG_IGN设置信号动作将导致待处理信号被丢弃,无论其是否被阻止.
而过程信号掩码包含当前被阻止的一组信号.
当进程阻塞信号时,保持信号的发生,直到信号被解除阻塞(阻塞的信号不会丢失,而忽略的信号会丢失).