社区
Linux/Unix社区
帖子详情
Linux下的信号忽略和信号阻塞是什么意思
ra_zy
2006-04-08 03:15:55
麻烦大侠把处理流程说清楚一点.
...全文
1589
7
打赏
收藏
Linux下的信号忽略和信号阻塞是什么意思
麻烦大侠把处理流程说清楚一点.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wwwhl668899
2006-04-14
打赏
举报
回复
人才招聘
北京讯业互联 由于业务扩展
现在招聘嵌入式程序员
位置 北京海淀区 牡丹园北
招聘 3人
要求 用c++ c作嵌入式(半年以上工作经验) email预约面试时间
email地址 wwwhl668899@163.com
待遇面谈 根据能力而定
公司规模20多人
alaiyeshi
2006-04-14
打赏
举报
回复
the sighold function shall add sig to the calling peocess's sinal mask.
有sighold
SIGCHLD Ign Child stopped or terminated
常数SIG_IGN,表示忽略信号
下面的是我转的
Linux下的c语言网络编程--将普通进程转换为守护进程
c 作者 javaSky @ 2005-05-10 10:49:15
信号处理。一般要忽略掉某些信号。信号相当于软件中断,Linux/Unix下的信号机制提供了一种处理异步事件的方法,终端用户键入引发中断的键,或是系统发出信号,这都会通过信号处理机制终止一个或多个程序的运行。
不同情况下引发的信号不同,所有的信号都有自己的名字,这些名字都是以“SIG”开头的,只是后面有所不同。我们可以通过这些名字了解到系统中到底发生了什么事。当信号出现时,我们可以要求系统进行一下三种操作:
a、忽略信号。大多数信号都采用这种处理方法,但是对SIGKILL和SIGSTOP信号不能做忽略处理。
b、捕捉信号。这是一种最为灵活的操作方式。这种处理方式的意思就是:当某种信号发生时,我们可以调用一个函数对这种情况进行响应的处理。最常见的情况是:如果捕捉到SIGCHID信号,则表示子进程已经终止,然后可作此信号的捕捉函数中调用waitpid()函数取得该子进程的进程ID已经他的终止状态。如果进程创建了临时文件,那么就要为进程终止信号SIGTERM编写一个信号捕捉函数来清除这些临时文件。
c、执行系统的默认动作。对绝大多数信号而言,系统的默认动作都是终止该进程。
在Linux下,信号有很多种,我在这里就不一一介绍了,如果想详细地对这些信号进行了解,可以查看头文件<sigal.h>,这些信号都被定义为正整数,也就是它们的信号编号。在对信号进行处理时,必须要用到函数signal(),此函数的详细描述为:
-----------------------------------------------------------------
#include <signal.h>
void (*signal (int signo, void (*func)(int)))(int);
-----------------------------------------------------------------
其中参数signo为信号名,参数func的值根据我们的需要可以是以下几种情况:(1)常数SIG_DFL,表示执行系统的默认动作。(2)常数SIG_IGN,表示忽略信号。(3)收到信号后需要调用的处理函数的地址,此信号捕捉程序应该有一个整型参数但是没有返回值。signal()函数返回一个函数指针,而该指针指向的函数应该无返回值(void),这个指针其实指向以前的信号捕捉程序。
下面 回到我们的daemonize()函数上来。这个函数在创建守护进程时忽略了三个信号:
signal(SIGTTOU,SIG_IGN);
signal(SIGTTIN,SIG_IGN);
signal(SIGTSTP,SIG_IGN);
这三个信号的含义分别是:SIGTTOU表示后台进程写控制终端,SIGTTIN表示后台进程读控制终端,SIGTSTP表示终端挂起。
wanghi
2006-04-14
打赏
举报
回复
让系统自动来收拾!!
结贴吧!!LZ
ra_zy
2006-04-14
打赏
举报
回复
signal(SIGCHLD,SIG_IGN ).
那上面这句代码怎么可以防止僵尸程序呢.忽略了的话,不是就什么都没做吗?那子进程的尸体不是就没收拾吗?
wanghi
2006-04-09
打赏
举报
回复
忽略就是不对这个或者这些信号进行任何操作,方法之一有:
signal(signo,SIG_IGN )
堵塞就是先不做处理!
sigprocmask + SIG_BLOCK
sigprocmask + SIG_UNBLOCK(解除堵塞)
Wolf0403
2006-04-08
打赏
举报
回复
sighold? never heard of that...
sigprocmask + SIG_BLOCK
NC
2006-04-08
打赏
举报
回复
1.sigset ( 信号,SIG_IGN )
2.sighold ( 信号 )
Linux
虚拟机基础知识用法
https://blog.csdn.net/weixin_51911075/article/details/128022926?spm=1001.2014.3001.5501 此篇文章是描述
Linux
信号
知识,有概念描述、举例例证、截图示意......
信号
是进程间通信的一种手段; 是一种事件触发机制(类似于中断机制); 是一种异步通信(异步通知)(是进程间通信机制中唯一一种异步手段),这种通信无法传递大量的数据; 【同步:是一种按照顺序依次执行的过程[如果某一环节没有执行,则整个过程会
阻塞
],通信双方实时做一件事情】 【异步:是一种使用
信号
或中断来实现一种事件触发过程,如果没
信号
或中断产生,并不会影响程序的正常执行。通信双方中任意一方不会等待[通信过程,会选择做自己的事情]】
信号
可以有一个进程发送,另外一些进程捕获,
阻塞
和
忽略
; 【捕获:收到
信号
后会执行相应的动作】 【
阻塞
:会
阻塞
信号
的传递,直到解除
阻塞
,才会传递
信号
】 【
忽略
:收到
信号
后,不做任何处理】 (如果不给
信号
关联动作,则执行系统默认动作)
信号
无法传递大量数据
信号
可以在任意进程间通信
信号
是一种异步通信手段
linux
设置进程不
忽略
信号
,
Linux
下的
信号
忽略
和
信号
阻塞
是
什么意思
麻烦大侠把处理流程说清楚一点.|
忽略
就是不对这个或者这些
信号
进行任何操作,方法之一有:signal(signo,SIG_IGN)堵塞就是先不做处理!sigprocmask+SIG_BLOCKsigprocmask+SIG_UNBLOCK(解除堵塞)|让系统自动来收拾!!结贴吧!!LZ|thesigholdfunctionshalladdsigtothecallingpe...
linux
设置进程不
忽略
信号
,
linux
进程之
信号
响应
四
信号
信号
:一种异步进程间通信方式一些特殊
信号
:ctrl + c 发送SIGINT不能
忽略
信号
:SIGKILL,SIGSTOP默认被
忽略
的
信号
SIGCHLD大部分都是杀死进程用户自定义的
信号
:SIGUSR1,SIGUSR2 通常用于程序中进程对
信号
的响应方式:1.
忽略
2.捕捉(当
信号
到达的时候执行
信号
处理函数)3.默认处理设置进程对
信号
的处理方式:/*不需要自...己声明,头文件中有说明*/ty...
linux
信号
阻塞
和
信号
未决
信号
的“未决”是一种状态,指的是从
信号
的产生到
信号
被处理前的这一段时间;
信号
的“
阻塞
”是一个开关动作,指的是阻止
信号
被处理,但不是阻止信 号产生。
信号
的
阻塞
就是让系统暂时保留
信号
留待以后发送。由于另外有办法让系统
忽略
信号
,所以一般情况下
信号
的
阻塞
只是暂时的,只是为了 防止
信号
打断敏感的操作。 * 当你需要修改某些全局变量时,你可以通过sigprocmask()函数
阻塞
处理函数中也使用
linux
信号
--
阻塞
信号
1.
信号
在内核中的表示 我们知道了
信号
产生的各种原因,而实际执行
信号
处理的动作,叫做
信号
递达(Delivery)。
信号
从产生到递达之间的状态,称为
信号
未决(Pending)。进程可以选择
阻塞
(Block)某个
信号
。被
阻塞
的
信号
产生时将保持在未决状态,直到进程解除对此
信号
的
阻塞
,才执行递达的动作。 注意,
阻塞
和
忽略
是不同的,只要
信号
被
阻塞
就不会递达,而
忽略
是在递达之后可选的一种处理动作。
Linux/Unix社区
23,124
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章