|
/ After a while,check to see whether any signals are pending. /
sigpending (&waiting_mask);
if (sigismember (&waiting_mask,SIGINT)) {
/ User has tried to kill the process. /
}
else if (sigismember (&waiting_mask,SIGTSTP)) {
/ User has tried to stop the process. /
}
SIGINTsignal is pending when anotherSIGINTsignal arrives,your program will probably only see one of them when you unblock this signal.
sigpendingfunction is new in POSIX.1. Older systems have no equivalent facility.
/* If this flag is nonzero,don't handle the signal right away. */
volatile sig_atomic_t signal_pending;
/ This is nonzero if a signal arrived and was not handled. /
volatile sig_atomic_t defer_signal;
void
handler (int signum)
{
if (defer_signal)
signal_pending = signum;
else
... / "Really" handle the signal. /
}
...
(编辑:网站开发网_马鞍山站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|