加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

UNIX再学习 -- 进程间通信

发布时间:2022-11-05 11:05:29 所属栏目:Unix 来源:
导读:  大佬教程收集整理的这篇文章主要介绍了UNIX再学习 -- 进程间通信,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。一、进程间通信概念

  首先,需要了解一下什么是进程间通信。

  进
  大佬教程收集整理的这篇文章主要介绍了UNIX再学习 -- 进程间通信,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。一、进程间通信概念
 
  首先,需要了解一下什么是进程间通信。
 
  进程之间的相互通信的技术,称为进程间通信(InterProcess Communication,IPC)。
 
  下图列出 4 种实现所支持的不同形式的 IPC。
 
  之前进程间交换信息的方法只能是由 fork 或 exec 传送文件。
 
  进程间通信 (IPC)方式有:
 
  (1)管道
 
  (2)消息队列
 
  (3)信号量
 
  (4)共享存储
 
  (5)套接字
 
  其中消息队列、信号量、共享存储统称为 XSI IPC通信方式
 
  下面我们开始一一详细讲解:
 
  二、管道
 
  管道是 UNIX 系统 IPC 的最古老形式。所有 UNIX 系统都提供此种通信机制。管道有以下两种局限性。
 
  (1)历史上,它们是半双工的(即数据只能在一个方向上流动)。现在,某些系统提供全双工管道,但是为了最佳的可移植性,我们决不应预先假定系统支持全双工管道。
 
  (2)管道只能在具有公共祖先的两个进程之间使用。通常,一个管道由一个进程创建,在进程调用 fork 之后,这个管道就能在父进程和子进程之间使用了。
 
  尽管有这两种局限性,半双工管道仍是最常用的 IPC 形式。
 
  其中管道又分为unix进程通信,有名管道 无名管道。
 
  1、无名管道
 
  无名管道是一个与文件系统无关的内核对象,主要用于父子进程之间的通信,需要用专门的系统调用函数创建。
 
  #include
  int pipe(int pipefd[2]);
  返回值:若成功,返回 0;若出错,返回 -1.
  (1)函数功能
 
  主要用于创建管道文件,利用参数返回两个文件描述符。
 
  其中 pipefd[0] 用于从所创建的无名管道中读取数据,pipefd[1] 用于向该管道写入数据,pipefd[1] 的输出是pipefd[0] 的输入。
 
  (2)基于无名管道实现进程间通信的编程模型
 
  《1》父进程调用 pipe 函数在系统内核中创建无名管道对象,并通过该函数的输出参数 pipefd,获得分别用于读写该管道的两个文件描述符 pipefd[0] 和 pipefd[1]
 
  大佬总结
 
  以上是大佬教程为你收集整理的UNIX再学习 -- 进程间通信全部内容,希望文章能够帮你解决UNIX再学习 -- 进程间通信所遇到的程序开发问题。
 
  如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章