进程间通信(一)
进程间通信 一、进程间通信简介 1.进程间是相互独立的,每个进程都有自己的进程虚拟地址空间,二进程通讯需要介子,使得两个进程都能访问的公共资源; 2.进程间通讯的目的: 数据传输:一个进程需要将他的数据发送给另一个进程 资源共享:多个进程间共享同样的资源 通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件(如子进程退出时要通知父进程回收其资源等) 进程控制:有些进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程所有陷入和异常,并能及时的知道他的改变状态 二、进程间通讯的发展及分类: 1.管道 匿名管道pipe 命名管道 2.System V进程间通讯 System V消息共享队列 System V共享内存 System V信号量 3.POSIX进程间通讯 消息队列 共享内存 信号量 互斥量 条件变量 读写锁 三、管道 1.什么是管道: 管道是内核中的一块内存 ,构成一个队列, 使用一对文件描述符来进行访问管理这个内存 ,读文件描述符相当于从这个内存中取数据,写文件描述符相当于往这块内存中写数据 2.匿名管道 匿名管道的创建 int pipe(int pipefd[2]); 功能:是创建一个无名管道; 参数:是两个输出型参数,fd表示文件描述符数组,其中fd[0]端表示读端,fd[1]端表示写端。 返回值:创建成功返回0;失败返回错误码。