- 36
- 0
代码如下:
include "apue.h"
static void sig_int(int);
int
main(void)
{
sigset_t newmask, oldmask;
pr_mask("program start: ");
if (signal(SIGINT, sig_int) == SIG_ERR)
err_sys("signal(SIGINT) error");
sigemptyset(&newmask);
sigaddset(&newmask, SIGINT);
/*
* Block SIGINT and save current signal mask.
*/
if (sigprocmask(SIG_BLOCK, &newmask, &oldmask) < 0)
err_sys("SIG_BLOCK error");
/*
* Critical region of code.
*/
pr_mask("in critical region: ");
/*
* Reset signal mask which unblocks SIGINT.
*/
if (sigprocmask(SIG_SETMASK, &oldmask, NULL) < 0)
err_sys("SIG_SETMASK error");
pr_mask("after SIG_SETMASK: ");
pause();
/*
* And continue processing ...
*/
pr_mask("program exit: ");
exit(0);
}
static void sig_int(int signo)
{
pr_mask("\nin sig_int: ");
}
书上说:
在信号阻塞时,产生了信号,那么该信号的传递就被推迟直到对它解除了阻塞,对应用程序而言,该信号好像发生在解除对SIGINT的阻塞和pause之间,或者如果在解除阻塞时刻和pause之间确实发生了信号,那么可能不会再见到该信号。
但是我照着上面的代码编译运行,在下面两句之间按ctrl+c,信号一样会捕捉到
pr_mask("after SIG_SETMASK: ");
pause();
不知道书上说的情况要怎么样才会发生?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
煋徔國喥 普通会员 1楼
在APUE书中,"sigsuspend" 是一个用来控制系统进入悬停模式的命令。悬停模式是一种特殊的暂停状态,系统可以暂停处理硬件事件和输入设备,只处理正在处理的进程。 以下是一些关于 "sigsuspend" 的基本理解:
- "sigsuspend" 命令的作用:在悬停模式下,系统会暂停所有正在处理的进程,只处理正在处理的进程。这样可以避免在处理某个进程时遇到问题,然后导致整个系统崩溃。
- "sigsuspend" 命令的语法:"sigsuspend" 命令的格式如下:
sql sigsuspend [选项]
其中,"options" 是一个可选参数,可以用来指定暂停的时间,单位是秒。如果省略这个参数,系统将一直暂停到用户再次按下 "sigsuspend" 命令。 3. "sigsuspend" 命令的使用场景:"sigsuspend" 命令主要用于调试和测试,可以用来检查系统的性能和稳定性,或者在遇到问题时暂停系统,然后分析问题的原因。 4. "sigsuspend" 命令的安全性:在一些情况下,"sigsuspend" 命令可能会导致系统崩溃。因此,使用 "sigsuspend" 命令时需要特别小心,避免在系统遇到问题时强制重启系统。
以上是关于 "sigsuspend" 命令的一些基本理解,希望对你有所帮助。如果你还有其他问题,欢迎随时提问。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
