加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_马鞍山站长网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Signal Handling--ref

发布时间:2021-01-26 04:16:31 所属栏目:站长百科 来源:网络整理
导读:副标题#e# A program error such as dividing by zero or issuing an address outside the valid range. A user request to interrupt or terminate the program. Most environments are set up to let a user suspend the program by typing C-z ,or termi

/ 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. /
}

...

(编辑:网站开发网_马鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!