在UNIX中处理信号的区别

shr*_*sva 16 c unix signals

屏蔽信号使用sigprocmask()和忽略信号之间有区别signal(<signal>, SIG_IGN)吗?

Lar*_*ars 17

阻止与忽略不同.您可以通过安装忽略的信号SIG_IGNsigaction().

在内核或进程生成信号之后,内核使其等待某些进程.一旦该过程作用于信号,就称该信号被传送到过程.进程可以阻止信号,该信号使信号保持未被阻塞状态.未被阻止的信号将立即发送.信号掩码指定阻止哪些信号.进程可以确定哪些信号待处理.

大多数UNIX不会对同一待处理信号的多个实例进行排队; 每个信号只有一个实例可以挂起.

SIG_IGN为待处理信号设置信号操作将导致待处理信号被丢弃,无论是否被阻止.

并且过程信号掩码包含当前被阻止的信号集.

当一个过程阻塞一个信号时,信号的出现一直保持到信号被解锁(阻塞的信号不会丢失,而忽略的信号确实丢失).