unix 环境编程学习笔记------对于信号的一点认识

素颜马尾好姑娘i 2022-08-09 06:54 269阅读 0赞

信号的理解:

1.信号的本质是什么???
:::
: 信号的本质时一个整数,unix用一个整数来标示一个事件

2.信号与内核是什么关系???

请分析下面一段话:摘自《操作系统原理 技术 与编程》

从用户的角度看,只要调用了系统调用kill()就可以发送信号,此调用号只需要目标进程PID和一个信号SIG共两个参数就可以了。

而系统调用kill()是通过调用内核函数,sys_kill()来完成信号的发送的
不管信号来自哪里,内核最后总是通过直接或间接调用内核函数,来完成发送信号的任务。

举个例子: A进程向B进程发送一个信号。
A进程通过系统调用,把待发送的信号,和目的进程的pid传递给内核,内核收到之后,就调用内核函数把自己得到的信号
发送给进程号为目标进程的进程B.

要点: 信号的发送和接收实际上是同一个过程,它的实质是发送进程(或内核)通过相关的系统调用更新目标进程进程结构体中接收到信号的队列。

即:所谓的发送:就是要将要发送的信号的编号写入目标进程的进程结构体的signal域中。

3.信号与进程是什么关系???? 信号是怎样和进程联系在一起的????

要点: 1。在进程控制块中,所包含的下列成员用来跟踪发送给进程的信号。
2.进程结构体中与信号有关的成员:
struct signal_struct *sig;
sigset_t signal,blocked;
struct signal_queue *sigqueue,**sigqueue_tail;
int sigpending;

其中:
sig是一个指向signal_struct 结构体的指针,该结构体中存放处理该信号的各种数据结构以及指向信号处理函数的指针。

发表评论

表情:
评论列表 (有 0 条评论,269人围观)

还没有评论,来说两句吧...

相关阅读

    相关 unix编程信号机制笔记

    unix编程之信号机制笔记 > 信号是进程间通信的一种方式,但是写代码中用到该机制并不多,调试程序时需要掌握些,故大概了解即可 > > 基础环境:xcode+iterm

    相关 对于oracle sql左连接一点认识

    我们在连表的时候,可能有这样的需求,比如我要查询歌曲的信息,有张Song表,但是我需要返回的额数据不仅仅是Song的信息,可能还有专辑的信息,这时候我们就需要使用到左连接。左连