当前位置: 首页 > news >正文

广州企业网站排名网页设计网络培训

广州企业网站排名,网页设计网络培训,小程序开店要多少钱,网页制作范例9.进程间通信 **1. 进程间通信(IPC)概述****2. 无名管道(Pipe)****3. 有名管道(FIFO)****4. 信号通信(Signal)****5. 练习与作业****6. 信号的应用****7. 总结** 1. 进程间通信&…

9.进程间通信

      • **1. 进程间通信(IPC)概述**
      • **2. 无名管道(Pipe)**
      • **3. 有名管道(FIFO)**
      • **4. 信号通信(Signal)**
      • **5. 练习与作业**
      • **6. 信号的应用**
      • **7. 总结**


1. 进程间通信(IPC)概述

  • IPC的分类
    1. 古老的通信方式
      • 无名管道(pipe)。
      • 有名管道(fifo)。
      • 信号(signal)。
    2. IPC对象通信
      • 消息队列(较少使用)。
      • 共享内存。
      • 信号量集。
    3. Socket通信:用于网络通信。

2. 无名管道(Pipe)

  • 特性
    • 只能用于有亲缘关系的进程间通信(如父子进程)。
    • 半双工通信模式(单向通信)。
    • 数据以队列形式存储,先进先出(FIFO)。
    • 数据容量上限为64KB。
  • 使用框架
    1. 创建管道
      int pipe(int pipefd[2]);
      
      • pipefd[0]:读端。
      • pipefd[1]:写端。
    2. 读写管道
      • 读:read(pipefd[0], buffer, size);
      • 写:write(pipefd[1], buffer, size);
    3. 关闭管道
      close(pipefd[0]);
      close(pipefd[1]);
      
  • 注意事项
    • 管道的创建应在fork之前。
    • 读端关闭时,写操作会触发SIGPIPE信号。
    • 写端关闭时,读操作会返回0(表示文件结束)。

3. 有名管道(FIFO)

  • 特性
    • 可用于任意进程间通信。
    • 在文件系统中可见(通过mkfifo创建)。
    • 半双工通信模式。
  • 使用框架
    1. 创建有名管道
      int mkfifo(const char *pathname, mode_t mode);
      
    2. 打开有名管道
      int fd_read = open("./fifo", O_RDONLY);
      int fd_write = open("./fifo", O_WRONLY);
      
    3. 读写管道
      • 读:read(fd_read, buffer, size);
      • 写:write(fd_write, buffer, size);
    4. 关闭管道
      close(fd_read);
      close(fd_write);
      
    5. 卸载管道
      int unlink(const char *pathname);
      

4. 信号通信(Signal)

  • 特性
    • 异步通信方式。
    • 用于进程间发送简单的通知。
  • 信号的处理方式
    1. 默认处理:系统默认行为(如终止进程)。
    2. 忽略处理:忽略信号(如SIG_IGN)。
    3. 自定义处理:捕获信号并执行自定义函数。
  • 信号注册函数
    typedef void (*sighandler_t)(int);
    sighandler_t signal(int signum, sighandler_t handler);
    
    • handler:可以是SIG_DFL(默认)、SIG_IGN(忽略)或自定义函数。
  • 常见信号
    • SIGKILL(9):强制终止进程,不可捕获或忽略。
    • SIGSTOP(19):暂停进程,不可捕获或忽略。
    • SIGUSR1(10)和SIGUSR2(12):用户自定义信号。

5. 练习与作业

  • 练习1:设计一个多进程程序,使用无名管道在父子进程间传递任意信息(如数字、字符串)。
  • 练习2:验证管道的同步效果,测试读端关闭时写操作的行为,以及写端关闭时读操作的行为。
  • 练习3:使用有名管道实现非亲缘关系进程间的通信,支持连续发送数据并在收到quit时退出。
  • 作业1:封装有名管道的读写函数:
    int fifo_read(char *fifoname, void *s, int size);
    int fifo_write(char *fifoname, void *s, int size);
    
  • 作业2:修改有名管道通信程序,添加信号处理流程,当发送quit时,进程A发送信号,进程B收到信号后退出。

6. 信号的应用

  • 发送信号
    • kill:向指定进程发送信号。
      int kill(pid_t pid, int sig);
      
    • raise:向当前进程发送信号。
      int raise(int sig);
      
    • alarm:设置定时器,定时发送SIGALRM信号。
      unsigned int alarm(unsigned int seconds);
      
  • 信号处理
    • 自定义信号处理函数:
      void handler(int sig) {// 自定义处理逻辑
      }
      
    • 注册信号处理函数:
      signal(SIGUSR1, handler);
      

7. 总结

  • 无名管道:适用于有亲缘关系的进程间通信,数据容量有限。
  • 有名管道:适用于任意进程间通信,通过文件系统可见。
  • 信号通信:适用于异步通知,支持默认、忽略和自定义处理方式。
http://www.yayakq.cn/news/193183/

相关文章:

  • 网站制作1怎么用自己的电脑做服务器发布网站
  • 邢台做网站推广找谁郑州做网站琴
  • 如何把自己做的网站连上网网站的会员认证怎么做
  • 荆门网站开发公司网站开发网页跳转到新的页面
  • 传奇网站模板怎么做的吗seo外贸网站制作
  • php 手机网站cms网站title写法
  • 做个网站在线投稿页面建筑公司招聘信息
  • 小天才电话手表网站网站系统说明书
  • 全栈网站开发查看一个网站的备案
  • 电厂建设审批进度网站做绒毛鉴定网站
  • 网站关键词排名全掉了照片处理在线
  • 购物网站项目建设背景介绍wordpress用户组名称
  • 网站图片最大尺寸是多少常德网站seo
  • 哪里可以找到做网站的怎么做车载mp3下载网站
  • 工业设计出来做什么宁波seo教程app推广
  • wordpress菜谱网站盐城网站开发代理
  • 网站开发知识付费做网站 郑州公司哪家好
  • 网站建设销售好做建筑网课回放
  • 网站建设属不属于无形资产优秀的手机网站标准
  • 湖北企业网站优化排名网站打不开了什么原因
  • 网站更改建设方案模板成都人才网
  • 网站两边广告无锡软件外包公司排名
  • 南通城乡住房建设厅网站首页网站在线报名怎么做
  • 网站网络推广软件企业如何做好网站运营
  • 佛山网站搜索优化WordPress 获得附件
  • 企业营销型网站规划WordPress添加PHP代码
  • 跨境建站平台如何用微信小程序开店
  • 做网站都注意哪些东西怎么制作一个网站首页
  • 网站建设的固定资产包括哪些爱做网站外国
  • 模板网站 建设 方法现在手机网站用什么做