经典linux系统编程第7章.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《经典linux系统编程第7章.ppt》由会员分享,可在线阅读,更多相关《经典linux系统编程第7章.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 7 章章进程间的通信进程间的通信本章重点 q进程通信中信号概念及信号处理q进程间的管道通信编程q进程间的内存共享编程27.1.1 信号及其使用信号及其使用 q信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。q信号事件的发生有两个来源:硬件来源,如按下了键盘Delete键或者鼠标单击,通常产生中断信号(SIGINT)或者其它硬件故障。软件来源,如使用系统调用或者是命令发出信号。最常用发送信号的系统函数是kill、raise、alarm、setitimer、sigation
2、和sigqueue函数,软件来源还包括一些非法运算等操作。37.1.1 信号及其使用信号及其使用q例例7.1:列出系统所支持的所有信号列表。(1)使用系统命令:rootlocalhost root#kill -l(2)分析:)分析:qSIG信号信号 qSIGRTMIN信号是从信号是从UNIX系统中继承下来的称为不可靠信号系统中继承下来的称为不可靠信号(也也称为非实时信号称为非实时信号)。qSIGRTMAX是为了解决前面是为了解决前面“不可靠信号不可靠信号”问题而进行更改和问题而进行更改和扩充的信号,称为可靠信号扩充的信号,称为可靠信号(也称为实时信号也称为实时信号)。q可靠信号可靠信号(实时信
3、号实时信号):支持排队,发送用户进程一次就注册一:支持排队,发送用户进程一次就注册一次,发现相同信号已经在进程中注册,也要再注册。次,发现相同信号已经在进程中注册,也要再注册。q不可靠信号不可靠信号(非实时信号非实时信号):不支持排队,发送用户进程判断后:不支持排队,发送用户进程判断后注册,发现相同信号已经在进程中注册,就不再注册,忽略该注册,发现相同信号已经在进程中注册,就不再注册,忽略该信号。前面显示的信号。前面显示的31种种“SIG”开头的,也属于非实时信号。开头的,也属于非实时信号。47.1.1 信号及其使用信号及其使用q一旦有信号产生,用户进程对信号的响应有3种方式:执行默认操作。L
4、inux对每种信号都规定了默认操作。捕捉信号。定义信号处理函数,当信号发生时,执行相应的处理函数。忽略信号。不希望接收到的信号对进程的执行产生影响,而让进程继续进行时,可以忽略该信号,即不对信号进程任何处理。5常见信号的含义及其默认操作67.2.1 信号操作的相关函数信号操作的相关函数77.2.1 信号操作的相关函数信号操作的相关函数1.信号发送信号发送 信号发送的关键,是使系统知道向哪个进程发送以及发送什么信号。能否向某一进程发送某一特定信号是和用户的权限密切相关的。87.2.1 信号操作的相关函数信号操作的相关函数q例例7.2:设计一个程序,要求用户进程复制出一个子进程,父进程向子进程发出
5、信号,子进程收到此信号,结束子进程。q源程序代码:编译成功后,运行可执行文件,编译成功后,运行可执行文件,此时系统会显示子进程的进程号此时系统会显示子进程的进程号(PID)、)、kill 函数的返回值和函数的返回值和SIGKILL信号所结束进程的进程信号所结束进程的进程号号(PID)。由此例可知,系统调用由此例可知,系统调用kill函数和函数和raise函数,都是简单地向某一进函数,都是简单地向某一进程发送信号。程发送信号。kill函数用于给特定函数用于给特定的进程或进程组发送信号,的进程或进程组发送信号,raise函数用于向一个进程自身发送信函数用于向一个进程自身发送信号。号。97.2.1
6、信号操作的相关函数信号操作的相关函数107.2.1 信号操作的相关函数信号操作的相关函数2.信号处理信号处理 当某个信号被发送到一个正在运行的进程时,该进程即对此特定信号注册相应的信号处理函数,以完成所需处理。117.2.1 信号操作的相关函数信号操作的相关函数q例例7.3:设计一个程序,要求程序运行后进入无限循环,当用户按下中断键(Ctrl+C)时,进入程序的自定义信号处理函数,当用户再次按下中断键(Ctrl+C)后,结束程序运行。q源程序代码:signal函数主要用于前函数主要用于前31种非实种非实时信号的处理,不支持信号传递时信号的处理,不支持信号传递信息信息(函数类型是函数类型是voi
7、d),但使用,但使用简单、方便,只需把要处理的信简单、方便,只需把要处理的信号和处理函数列出即可,因此受号和处理函数列出即可,因此受到许多软件工程师欢迎。到许多软件工程师欢迎。127.2.1 信号操作的相关函数信号操作的相关函数137.2.1 信号操作的相关函数信号操作的相关函数3.信号阻塞信号阻塞 有时既不希望进程在接收到信号时立刻中断进程的执行,也不希望此信号完全被忽略掉,而是延迟一段时间再去调用信号处理函数,这个时候就需要信号阻塞来完成。147.2.1 信号操作的相关函数信号操作的相关函数q例例7.4:设计一个程序,要求程序主体运行时,即使用户按下的中断键(Ctrl+C),也不能影响正在
8、运行的程序,等程序主体运行完毕后才进入自定义信号处理函数。q源程序代码:157.2.1 信号操作的相关函数信号操作的相关函数167.2 管道管道q在Linux中,管道是一种特殊的文件,对一个进程来说,管道的写入和读取与一个普通文件没有区别。q在Linux系统中,管道用于两个进程间的通信,这两个进程要有同源性,即它们必须是最终由同一个进程所生成的进程。管道通信采用的是半双工方式,即同一时间只允许单方向传输数据。q管道是Linux支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典 linux 系统 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内