linux 信号作用,关于Linux信号的总结

关于Linux信号的总结

标准信号与实时信号

0-31 这 32 个信号称为标准信号。

从 32 到 63 之间的 32 个信号称为实时信号。

可以通过 man 7

signal 查看对“标准信号”和“实时信号”详细的描述。

信号排队

每个进程拥有一个信号等待队列。在 task_struct 中有一个 struct sigpending pending 域,

就是进程的信号等待队列。

当向一个进程发送信号时,信号会先被送入进程的信号等待队列,然后等到进程被调度到去处理信号的时候,会从信号

等待队列中依次取出信号进行处理。

标准信号不能排队,而实时信号可以排队:

假设进程屏蔽了一个标准信号,当给它连续发送多个相同

的标准信号,则只有第一个被放入进程的信号等待队列中,后续的都被丢弃。

假设进程屏蔽了一个实时信号,当给它连续发送多个相同的实时信号,则所有

的信号都被放入进程的信号接收队列中。

实时信号是在 POSIX.4 实时信号扩展中定义的。

信号屏蔽

进程可以屏蔽它不想接收的信号。

在 task_struct 中有一个 block 域,指定了进程要屏蔽的信号集合。

屏蔽信号

带来的影响:

1、

当向一个进程投递信号时,如果发现进程屏蔽了此信号,则即使此进程处于睡眠状态,也不唤醒它。(否则睡眠的进程会被唤醒)。

2、

当进程开始处理它的信号等待队列的时候,对于被屏蔽的信号,不做处理。所以这些信号会一直待在等待队列中,直到进程解开对相应信号的屏蔽,才能被处理。(按照以上理解,也就是虽说某些信号被屏蔽,但是这个信号会被保存在pending里,只是在进程从内核返回处理信号时不处理被阻塞(屏蔽)的信号,直到该信号被解除屏蔽)

是 KILL 和 TERM 这两种信号是不能屏蔽的。

发送信号的处理过程

用户空间可以通过 kill()  或 sigqueue() 两个系统调用来向一个进程发送信号。

内核空间的入口是 sys_kill():

sys_kill()

==>  kill_something_info()  ==>  kill_proc_info()  ==>

send_sig_info()  ==>  deliver_signal() ==> send_signal()

1、    首先,根据 PID 找到对应的目标进程。 这是通过

find_task_by_pid() 实现的。

2、    如果目标进程对信号的处理行为是“忽略”,则无需投递

3、

相关文档:

什么是例行性命令?

Linux 系统的例行性命令有哪些?

仅执行一次的工作排程: at

循环执行的例行性命令:

crontab

系统的

crontab 设定: /etc/crontab

安全的防护: /var/log/cron 记录文件

本章习题练习

什么是例行性命令?

每个人或多或少都有一些约会或者是工作,有的工作是例行性的,例如每年一次� ......

如何开启关闭linux防火墙

重启后生效

开启:chkconfig iptables on

关闭:chkconfig iptables off

即时生效,重启后失效

开启:service iptables start

关闭:service iptables stop

关闭: /etc/rc.d/init.d/iptables stop

启动: /etc/rc.d/init.d/ip ......

在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别。

LINUX中断机制与信号

中断和异常

l

中断(也称硬件中断)

定义

:� ......

二、信 号 机 制

上 一节中介绍了信号的基本概念,在这一节中,我们将介绍内核如何实现信号机制。即内核如何向一个进程发送信号、进程如何接收一个信号、进程怎样控制自己对信 号的反应、内核在什么时机处理和怎样处理进程收到的信号。还要介绍一下setjmp和longjmp在信号中起到的作用。

1、内核对信号的� ......

前面两节已经介绍了有关信号的大部分知

识。这一节我们来了解一下这些系统调用。其中,系统调用signal是进程用来设定某个信号的处理方法,系统调用kill是用来发送信号给指定进程的。这

两个调用可以形成信号的基本操作。后两个调用pause和alarm是通过信号实现的进程暂停和定时器,调用alarm是通过信号通知进程定时器� ......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值