- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4进程间通信.ppt
了解进程和线程基本概念 掌握进程编程 掌握线程编程 第4章进程间通信 预习检查 进程间通信的方法有? 信号、文件锁、管道、FIFO、信号量、共享内存、消息队列 哪一种方法最有效,最快? 共享内存 哪些方法是system V IPC? 信号量、共享内存、消息队列 必须要求是亲属进程间才能通信的方法是? 管道 本章目标 了解Unix/Linux进程间通信的方式 掌握和熟练运用常见的IPC方式 信号 管道和FIFO 信号量 消息队列 共享内存 本章结构 信号 进程间通信 管道/FIFO 信号响应、处理与发送 信号机制 管道的概念 管道的创建与读写 FIFO 消息队列的创建与操作 信号量的创建与操作 信号量综合示例 综合示例msgtool 共享内存的创建与操作 综合示例shmtool 信号量 消息队列 共享内存 信号 信号(signal)机制是Linux系统中最为古老的进程之间的通信机制 信号事件的发生有两个来源: 硬件来源,比如我们按下了键盘或者其它硬件故障; 软件来源,最常用发送信号的系统函数是kill(), raise(), alarm()和setitimer()等函数,软件来源还包括一些非法运算等操作。 进程对信号的处理 进程可以通过三种方式来响应和处理一个信号: 忽略信号 捕捉信号 执行缺省操作 信号处理函数的安装 #includesignal.h void( *signal(int sig, void( *func)(int)))(int); 如果func不是函数指针,必须是下列两个宏: SIG_IGN:忽略信号。 SIG_DEF:采用系统默认的方式处理信号,执行缺省操作。 返回值:返回先前的信号处理函数指针,如果有错误则返回-1。 要安装的信号值 信号的处理 函数 信号的发送 除了内核和超级用户,并不是每个进程都可以向其他的进程发送信号。 一般的进程只能向具有相同uid和gid的进程发送信号,或向相同进程组中的其他进程发送信号。 常用的发送信号的函数有kill()、raise ()、alarm()、setitimer()、abort() 等。 信号的发送 kill()函数:给指定的进程发送某一个信号 #include sys/types.h #include signal.h int kill(pid_t pid, int sig); 返回值:成功为0;失败返回-1。 接收信号的进程id 要发送的信号值 信号的发送 raise()函数:给进程本身发送一个信号 #include signal.h int raise(int sig); 相当于kill(getpid(),sig); 返回值:成功为0;失败返回-1。 要发送的信号值 信号的发送 alarm()函数:是一个简单定时器,专为SIGALRM信号设计 #include unistd.h unsigned int alarm(unsigned int seconds); 在指定的seconds秒之后,给进程本身发生一个SIGALRM信号 定时器的定时时间 管道 管道是针对于本地计算机的两个进程之间的通信而设计的通信方法,管道建立后,实际获得两个文件描述符:一个用于读取而另外一个用于写入。 管道是半双工的,数据只能向一个方向流动,需要双方通信时,需要建立起两个管道。 只能用于父子进程或者兄弟进程之间(具有亲缘关心的进程)。 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是单独构成一种文件系统,并且只存在于内存中。 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。 管道的创建 系统调用pipe()用于创建一个管道 int pipe(int filedes[2]); 建立管道: filedes[0]: 为pipe的读出端 filedes[1]: 为pipe的写入端 两个文件描述符数组。 文件描述符 FIFO FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中 在文件系统中是一个有名字的管道 任何进程都可以打开 进程间无需关联 FIFO的创建 #include sys/types.h #include sys/stat.h int mkfifo(const char *pathname, mode_t mode); 文件路径名 文件权限 信号量 System IPC中,对于每一个新建的信号
您可能关注的文档
- 2012渤海基层工作记录本.doc
- 2012考研时间倒计时日历.doc
- 2012计划与决策no3.ppt
- 2012高考倒计时100天复习资料(自然地理部分知识点归纳)加强训练版.doc
- 2012高考倒计时新编日历.doc
- 2012高考倒计时软件.doc
- 2013 长沙理工大学基层党组织、党员“承诺践诺评诺”实施办法.doc
- 20130721 飘然老师为您呈现面试的精彩.ppt
- 2013厦大考研秋季备考营养均衡不松懈.doc
- 2013国家公务员考试申论精彩开头结尾集锦.docx
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
最近下载
- T∕CEC 131.4-2016 铅酸蓄电池二次利用 第4部分:电池维护技术规范.pdf
- 百日咳试题附有答案.docx VIP
- 2024年广东省深圳市光明区人大常委会办公室招聘一般类岗位专干12人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
- 高中语文任务驱动型材料作文:枯燥与热闹审题指导(含解析).docx VIP
- 某镇卫生院污水设计方案.pdf VIP
- 2024年广东深圳市光明区人大常委会办公室招聘一般类岗位专干3人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
- 中考数学经验交流会发言稿.pdf
- 2024年7月广东省深圳市光明区人大常委会办公室招聘10人历年【高频考点汇总500题】模拟卷及参考答案详解.docx VIP
- 《溜冰圆舞曲和雷鸣电闪波尔卡》精品课件2023.pptx
- 水利项目安全评价报告.docx
文档评论(0)