1. 信号掩码——被阻塞的信号集
每个进程都有一个用来描述哪些信号传送来将被阻塞的信号集,如果某种信号在某个进程的阻塞信号集中,则传送到该进程的此种信号将会被阻塞。当前被进程阻塞的信号集也叫信号掩码,类型为sigset_t。每个进程都有自己的信号掩码,且创建子进程时,子进程会继承父进程的信号掩码。
 
2. 信号阻塞和忽略的区别
阻塞的概念与忽略信号是不同的:操作系统在信号被进程            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2009-07-06 19:46:31
                            
                                4350阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            信号未决,信号阻塞,信号函数            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-11-21 21:32:00
                            
                                471阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            文章目录信号阻塞和未决信号信号集相关API函数操作流程代码示例未决信号代码示例pause的使用代码示例信号传送处理过程可重入函数代码示例信号处理函数的继承代码示例setitimer实现定时器代码示例信号阻塞和未决信号进程可以设置对某个信号的阻塞(屏蔽),需要用到sigset_t(信号集)数据类型。信号集相关API函数sigemptyset(3)#include <signal.h...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-08-31 13:44:02
                            
                                451阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            信号:     #include<signal.h>     kill -l :查看系统定义的信号列表。其中,1-31 普通信号(可能丢失),34-64 实时信号(不会丢失) --- 关注  当前信号有无产生        [1]   SIGHUP   :&            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                            精选
                                                        
                            2016-04-28 14:03:30
                            
                                4127阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Qt程序中有时候不希望信号槽的触发,在某段流程结束之后,又需要继续回复信号槽状态,这时候可以用阻塞或者断开信号槽的方法来处理。
 
1. 阻塞方法:bool QObject::blockSignals(bool block)
阻塞模式下,这个对象发送的信号都会被阻塞,解除阻塞后则不再阻塞。返回值为之前状态的阻塞情况。
如果block为true,阻塞信号,或者如果block为false,取消信号阻塞            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2020-01-06 16:10:00
                            
                                1188阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            之前一直在研究信号阻塞之类的问题,当初正好有机会和大家共享一下.一、信号在内核中的表现现实执行信号的处理动作称为信号递达(Delivery),信号从发生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号发生时将保持在未决状态,直到进程消除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达以后可选的一种处理动作。信号在内核中的表现可以看做是这样的: 每个信号都有两个标记位分别表现阻塞和未决,还有一个函数指针表现处理动作。信号发生时,内核在进程控制块中设置该信号的未决标记,直到信号递达才清除该标记            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2013-05-19 19:52:00
                            
                                143阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            1. sigprocmask函数提供屏蔽和解除屏蔽信号的功能。 从而实现关键代码的运行不被打断。 函数声明如下: int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);其中参数 how可设置的参数为:SIG_BLOCK, SI            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2018-01-16 14:52:00
                            
                                295阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            crond是一个Linux下的定时执行工具,可以在无需人工干预的情况下运行作业。
service crond start #启动服务
service crond stop #关闭服务
service crond restart #重启服务
service crond reload #重新载入配置
看完几个实例,应该就明白了!
基本格式 :
# vim /etc/crontab            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2013-01-14 17:30:33
                            
                                769阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            /* * 题目: * 请编写一个程序,设置SIGINT和SIGQUIT信号, * 并在该程序中实现从文件中读取信息的操作, * 并保证在读取文件且只有在读取文件的过程中不会被发送的SIGINT和SIGQUIT信号所打断。 * 提示:在文件读取前阻塞信号,在文件读取后解除阻塞。 * */ #include #include #include #include #include ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-11-30 22:25:00
                            
                                288阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            信号的阻塞就是让系统暂时保留信号留待以后发送。(注意:不是不发送,而是延迟发送)一般情况下信号的阻塞只是暂时的,只是为了防止信号打断敏感的操作。1 信号集所有的信号阻塞函数都使用称作信号集的数据结构来表明受到影响的信号。每一个操作都包括两个阶段:创建信号集,传递信号集给特定的库函数。下面说明信号集和相关的数据类型:sigset_t:这个数据类型用来代表信号的集合,有两种方法对它进行初始化。一种是通过函数sigemptyset()使之不包含任何信号,然后用 sigaddset()函数加入需要的信号。另一种方法是通过函数sigfillset()使之包含所有信号,然后通过sigdelset()函数删            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-09-01 11:39:35
                            
                                174阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            有时候不希望在接到信号时就立即停止当前执行,...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2015-07-21 17:19:00
                            
                                255阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            [ Linux ] 进程信号递达,阻塞,捕捉            
                
                    
                        
                                                            
                                                                        
                                                                推荐
                                                                                        原创
                                                                                    
                            2022-12-10 17:01:42
                            
                                903阅读
                            
                                                        
                                点赞
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            信号量一般用于处理访问临界资源的同步问题。下面通过两个例子说明P、V操作以及使用程序server.c和client.c程序来演示信号量如何控制对资源的访问;sevrer.c 用来创建一个信号集,并对信号量循环减1,相当于分配资源;client执行时检查信号量,如果其值大于0代表有资源可用,继续执行,如果小于0代表资源已经分配完毕,进程client推出。
例 server.c
#include&            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2011-06-19 11:18:27
                            
                                4168阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            目录(?)[+]Sigaction[cpp] view plaincopySYNOPSIS         #include          int sigaction(int signum, const struct sigaction *act,                       struct si            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-08-17 23:36:02
                            
                                225阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            信号是Linux所使用的进程间通信的最古老的方式。它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 。一个完整的信号周期包括三个部分,信号的产生,信号在进程中的注册,信号在进程中的注销,执行信号处理函数。如下图所示:注意:这里信号的产生,注册,注销是信号的内部机制,而不是信号的函数实现。对信号的响应由三种方式:1、忽略信号,即对信号不做任何的处理。除SIGKILL和SIGSTOP除外。2            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2017-03-20 11:00:04
                            
                                672阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2014-07-26 11:10:00
                            
                                76阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-03-11 14:37:28
                            
                                300阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。信号在内核中的表示可以看作是这样的:  每个信号都有两个标志位分别表示阻            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-22 09:51:47
                            
                                71阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一,阻塞与非阻塞 
 
 
阻塞是指没有获得资源则挂起进程,直到获得资源为止。被挂起的进程进入休眠状态,被调度器的运行队列移走,直到等待条件被满足。非阻塞是不能进行设备操作时不挂起,或放弃,或反复查询,直到可以进行操作为止。 
驱动程序常需要这种能力:当应用程序进行read(),write()等系统调用时,若设备的资源不能获取,而用户又希望以阻塞的方式访问            
                
         
            
            
            
            信号捕获trap及其实例应用1、Linux支持的信号(标红部分为常用信号)信号(Signal):信号是在软件层次上对中断机制的一种模拟,通过给一个进程发送信号,执行相应的处理函数。进程可以忽略信号、捕捉信号和执行缺省操作。其中SIGKILL及SIGSTOP两个信号不能忽略。 1.1、Linux支持的信号列表编号信号名称缺省动作描述1SIGHUP终止终止进程,挂起2SIGINT终止键盘输入            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2019-02-24 16:59:57
                            
                                2857阅读