昆山网站建设网站wordpress 显示代码

张小明 2026/3/12 13:47:37
昆山网站建设网站,wordpress 显示代码,淘宝网页制作代码,站长工具精品问题#xff1a;信号为什么要被保存#xff1f;答#xff1a;信号不会立即处理#xff0c;产生之后#xff0c;处理之前#xff0c;就有时间窗口保存信号#xff0c;必须要把信号保存起来#xff0c;方便后面进行处理。概念#xff1a;1#xff09;实际执行信号的处理…问题信号为什么要被保存答信号不会立即处理产生之后处理之前就有时间窗口保存信号必须要把信号保存起来方便后面进行处理。概念1实际执行信号的处理动作称为信号递达handler2信号从产生到递达之家的状态称为信号未决pending3信号可以选择阻塞block某个信号说人话就是保存该信号但是不进行处理4被阻塞的信号产生时将保持在未决状态直到进程解除对该信号的阻塞才执行递达的动作注意阻塞和忽略不同只要信号被阻塞就不会递达而忽略是递达之后可选的一种处理动作pending 表这张表其实就是一个long long 类型只不过用位图操作来表示普通信号【131】实际是【164】因为还有实时信号是否被保存比特位的位置信号编号比特位的内容是否保存0没有1是block 表这张表和 pending 表一样也是位图操作原来表示普通信号 【131】是否被阻塞比特位的位置信号编号比特位的内容是否被阻塞0没有1是handler 表这张表是函数指针数组专门保存对应的信号编号的处理函数下标 1 信号编号问题signal2myhandle) 底层会做些什么答把我们 myhandle 函数地址根据信号编号 2 来填写到对应的 handler 表里。问题什么叫忽略默认答我们使用 signal 函数时传宏来表示对应的忽略和默认SIG_DFL 和 SIG_IGN 他们两个的本质其实就是 0 和 1 数字只不过把他们强转成函数类型通过对比得出他们是自定义函数函数指针较长还是忽略和默认。问题在信号还没有产生的时候进程就能识别和处理信号了因为程序员已经内置对应管理和处理方法其实就是上面那三张表。结论OS 需要让用户控制信号本质就是访问和操作上面的三张表因为那三张表数据内核结构所以我们要使用系统调用来操作这个三张表其中handler 表系统调用signal blockpending 表这些系统调用函数除了 signal 都是可以获取和设置当前进程的 pending 表和 block 表的。上面的两个函数都有一个参数sigset_t 类型这个内核自定义的类型它其实和pending 和 block 表里的 long long 类型一样都是用来表示信号是否被保存/阻塞通过它可以获取到对应的表其中 sigset_t 称为信号集block表称为 block 信号集、pending 表称为pending 信号集。其中阻塞信号集称为信号屏蔽字Signal Mask)。注意Sigal Mask 类似于 umask 权限掩码。不建议我们用户是直接修改表中的数据而是使用系统调用来修改这些系统调用这里就不再多讲如果想了解可以问一下大模型。sigprocmask 系统调用可以读取或更改进程的信号屏蔽字第一个参数第二个参数传你要修改的屏蔽字第三个参数原来的的屏蔽字防止你要恢复原来的屏蔽字。返回值成功 0 失败-1sigpending 系统调用它可以获取 pending 表参数传一个 pending 表的指针过去。返回值成功0失败-1sigpending 系统调用可以获取 pending 表那么谁来修改他呢答我们用户使用 kill 函数或者命令来让 OS 来修改。#include iostream #include unistd.h #include signal.h void printpending(const sigset_t pending) { for(int signo 31;signo 0;signo--) { if(sigismember(pending,signo))//判断 signo 信号是否存在, { std::cout 1; } else std::cout 0; } std::cout std::endl; } int main() { //屏蔽2号信号 sigset_t block_set,old_set; sigemptyset(block_set);//初始化 sigemptyset(old_set);//初始化 sigaddset(block_set,SIG_SETMASK);//对我们自定义的位图进行屏蔽 2号信号 的操作0 —— 1到这里我们还没有对当前进程的 2号信号进行屏蔽 int n sigprocmask(SIG_SETMASK,block_set,old_set);//修改内核级的 block 表此时已经把 2号信号 屏蔽了 (void)n; std::cout pid: getpid() std::endl; int cnt 1; //获取 pending 表和打印这个表 while(true) { sigset_t pending; sigemptyset(pending);//初始化 n sigpending(pending);//获取 pending 表 printpending(pending); if(cnt 20)//解除对 2号信号的屏蔽 { std::cout 解除对2号信号的屏蔽 std::endl; int n sigprocmask(SIG_SETMASK,old_set,nullptr);//把老的 block 表放回去就相当于解除对2号信号的屏蔽 } cnt; sleep(1); } return 0; }#include iostream #include unistd.h #include signal.h void handl(int signo) { std::cout 处理完成: signo std::endl; } void printpending(const sigset_t pending) { for(int signo 31;signo 0;signo--) { if(sigismember(pending,signo))//判断 signo 信号是否存在, { std::cout 1; } else std::cout 0; } std::cout std::endl; } int main() { signal(2,handl);//更改2号信号的处理函数 //屏蔽2号信号 sigset_t block_set,old_set; sigemptyset(block_set);//初始化 sigemptyset(old_set);//初始化 sigaddset(block_set,SIG_SETMASK);//对我们自定义的位图进行屏蔽 2号信号 的操作0 —— 1到这里我们还没有对当前进程的 2号信号进行屏蔽 int n sigprocmask(SIG_SETMASK,block_set,old_set);//修改内核级的 block 表此时已经把 2号信号 屏蔽了 (void)n; std::cout pid: getpid() std::endl; int cnt 1; //获取 pending 表和打印这个表 while(true) { sigset_t pending; sigemptyset(pending);//初始化 n sigpending(pending);//获取 pending 表 printpending(pending); if(cnt 20)//解除对 2号信号的屏蔽 { std::cout 解除对2号信号的屏蔽 std::endl; int n sigprocmask(SIG_SETMASK,old_set,nullptr);//把老的 block 表放回去就相当于解除对2号信号的屏蔽 } cnt; sleep(1); } return 0; }结论一旦我们解除对某个信号的阻塞该信号就会立即被处理。一旦处理完该函数此时pending 表对应的某个信号的比特位由 1 —— 0问题解除某个信号的屏蔽之后是先进行 pending 表中对应的信号由 1— 0 还是先执行处理函数答先把 pending 表中对应的信号由 1— 0 再执行对应的处理函数。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

用自己的电脑做主机建网站东莞 网站建设 定制水

Go语言高性能编程:7个实战技巧提升代码效率 【免费下载链接】go The Go programming language 项目地址: https://gitcode.com/GitHub_Trending/go/go Go语言以其出色的并发性能和简洁语法在系统编程领域广受欢迎,但要在实际项目中充分发挥其性能…

张小明 2026/3/5 2:27:42 网站建设

帝国网站后台认证码错误建设银行辽宁分行招聘网站

CSS变换、过渡与动画属性全解析 在网页设计中,为了实现更加丰富和动态的视觉效果,CSS提供了多种强大的功能,包括变换(Transforms)、过渡(Transitions)和动画属性。下面将详细介绍这些功能。 2D变换函数 2D变换函数可以对元素进行旋转、缩放、倾斜和平移等操作,为网页…

张小明 2026/3/5 2:27:39 网站建设

e想时代官方网站成都营销型网站

第一章:R 量子模拟的纠缠度计算在量子信息科学中,纠缠度是衡量量子系统非经典关联强度的核心指标。利用 R 语言进行量子态模拟与纠缠分析,能够为研究者提供灵活且可重复的数值实验环境。通过构建多粒子量子态向量并计算其约化密度矩阵&#x…

张小明 2026/3/5 2:27:36 网站建设

电商运营培训课程网站wordpress 更新过慢

Mooncake:重新定义大语言模型服务架构的革命性平台 【免费下载链接】Mooncake 项目地址: https://gitcode.com/gh_mirrors/mo/Mooncake Mooncake作为Kimi智能助手的技术支撑平台,正在重塑大语言模型服务的架构范式。这个以KVCache为核心的去聚合…

张小明 2026/3/5 2:27:37 网站建设

有哪些做平面设计好素材网站有哪些我要恢复百度

让通信“静默”与“苏醒”更智能:UDS 28服务的工程化落地实践在一辆新车下线前的EOL检测台上,总线突然陷入混乱——几十个ECU同时发送周期报文,诊断请求被淹没在噪声中;OTA升级过程中,某个未关闭的应用信号意外触发了错…

张小明 2026/3/5 2:27:37 网站建设

网站半年了 没有流量做房产中介网站

在AI图像生成领域,一款名为Nano Banana(Gemini-2.5-Flash-image) 的新模型正以其出色的表现吸引着创作者的目光。它被集成在“AI Image Studio”中,不仅操作简便,还在图像生成一致性和风格多样性方面表现突出&#xff…

张小明 2026/3/5 2:27:38 网站建设