现在的位置: 首页 > 综合 > 正文

进程间通信

2018年02月09日 ⁄ 综合 ⁄ 共 942字 ⁄ 字号 评论关闭

进程间通信

     何为通信?就是进程间传播交换信息

     ?进程通信的目的

     答:1)数据的传输:A进程发送数据给B进程

         2)共享数据

         3)通知事件:A进程通知B进程某事件发生了

         4)资源共享:多进程共享同一资源Ex:打印机

         5)进程控制

进程间通信的主要方法有:管道共享内存信号信号量套接字

不同操作系统有其自己独特的特点,因而根据操作系统的不同,通信方式也不同:

Windows操作系统进程间通信方式————

1)文件映射

把磁盘上的文件内容当做进程地址区间一块内存来对待,因此进程不必使用I/O操作,通过使用指针即可操作文件

Windows OS 允许多个进程访问同一映射文件,各进程在各自的地址空间内接收内存指针,通过该指针不同进程即可读、修改文件内容,实现对文件数据的共享

该方法仅限于本地进程

2)共享内存

       相当于malloc一块内存空间,两个进程都可以通过指针访问到这块内存中的数据,一个进程对数据的修改另一个进程也能感知到

3)匿名管道

       端到端的一种通信,可以是全双工也可以是半双工,限于父子进程或同一父进程的两个子进程间的通信,且数据为字节流

      匿名管道通常用来I/O重定向,不能用于网络通信,也不能用于两个不相关子进程

4)命名管道

       Server-Client间单向或双向的通信

       不同于匿名管道的是它可以实现两个不相关进程、两台计算机之间

       服务器创建一个管道并为之命名,任何进程都可以通过该名字打开这个管道实现通信

       命名管道提供简单接口,通过网络传输给另一个进程,但不能用于多进程通信

5)动态链接库DLL

      多个进程通过链接到同一个DLL,使用同一个DLL的数据就达到了通信的目的

6)套接字SOCKET

       应用于网络通信

       其实现相对底层,所以反而将单机上进程间的通信搞得很复杂,适得其反的感觉

Linux OS进程间通信————

1)管道

2)信号:用于通知进程某事情发生

3)信号量:进程间、同一进程下不同线程间同步

4)消息队列:克服了信号承载信息少,管道只能承载无格式的字节流及缓冲区大小有限的缺点

5)套接字:不同机器间通信

6)共享内存

抱歉!评论已关闭.