Windows&Linux下进程间通信的方式
2014-09-17 20:07
295 查看
1、管道
管道又分无名管道和有名管道,无名管道用于父进程与子进程间的通信,有名管道用于同一台计算机中任意两个进程间的通信。管道的缺点是只支持单向数据流。
2、消息队列
消息队列用于运行于同一台机器上的进程间通信,它和管道很相似,是一个在系统内核中用来保存消息的队列,它在系统内核中是以消息链表的形式出现。消息链表中节点的结构用msg声明。
3、共享内存
共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行 读写。得到共享内存有两种方式:映射/dev/mem设备和内存映像文件。前一种方式不给系统带来额外的开销,但在现实中并不常用,因为它控制存取的将是 实际的物理内存,在Linux系统下,这只有通过限制Linux系统存取的内存才可以做到,这当然不太实际。共享内存是最快的进程通信方式,是专门为应对其他进程间通信低效而设计的。
4、信号量
信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是前面提到的共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作:
(1) 测试控制该资源的信号量。
(2) 若此信号量的值为正,则允许进程使用该资源。进程将信号量减1。
(3) 若此信号量为0,则该资源目前不可用,进程进入睡眠状态,直至信号量值大于0,进程被唤醒,转入步骤(1)。
(4) 当进程不再使用一个信号量控制的资源时,信号量值加1。如果此时有进程正在睡眠等待此信号量,则唤醒此进程。
5、套接字
套接口(socket)编程是实现Linux系统和其他大多数操作系统中进程间通信的主要方式之一。我们熟知的WWW服务、FTP服务、TELNET服务 等都是基于套接口编程来实现的。除了在异地的计算机进程间以外,套接口同样适用于本地同一台计算机内部的进程间通信。可用于不同主机间的进程通信。
6、信号
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
管道又分无名管道和有名管道,无名管道用于父进程与子进程间的通信,有名管道用于同一台计算机中任意两个进程间的通信。管道的缺点是只支持单向数据流。
2、消息队列
消息队列用于运行于同一台机器上的进程间通信,它和管道很相似,是一个在系统内核中用来保存消息的队列,它在系统内核中是以消息链表的形式出现。消息链表中节点的结构用msg声明。
3、共享内存
共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行 读写。得到共享内存有两种方式:映射/dev/mem设备和内存映像文件。前一种方式不给系统带来额外的开销,但在现实中并不常用,因为它控制存取的将是 实际的物理内存,在Linux系统下,这只有通过限制Linux系统存取的内存才可以做到,这当然不太实际。共享内存是最快的进程通信方式,是专门为应对其他进程间通信低效而设计的。
4、信号量
信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是前面提到的共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作:
(1) 测试控制该资源的信号量。
(2) 若此信号量的值为正,则允许进程使用该资源。进程将信号量减1。
(3) 若此信号量为0,则该资源目前不可用,进程进入睡眠状态,直至信号量值大于0,进程被唤醒,转入步骤(1)。
(4) 当进程不再使用一个信号量控制的资源时,信号量值加1。如果此时有进程正在睡眠等待此信号量,则唤醒此进程。
5、套接字
套接口(socket)编程是实现Linux系统和其他大多数操作系统中进程间通信的主要方式之一。我们熟知的WWW服务、FTP服务、TELNET服务 等都是基于套接口编程来实现的。除了在异地的计算机进程间以外,套接口同样适用于本地同一台计算机内部的进程间通信。可用于不同主机间的进程通信。
6、信号
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
相关文章推荐
- 进程间通信方式总结(windows 和linux)
- 进程间通信方式总结(windows 和linux)
- Window & Linux 进程间通信方式(IPC)
- Windows与VMware下的Linux文件共享方式总结
- Windows与Vmware下的Linux文件共享方式总结
- Windows 启动方式总结归纳&HIPS注册表防护关键位置
- Linux下配置Gnome的文件打开方式 & 开始菜单管理
- Booting Linux from Windows' Boot Manager
- linux下wine安装成功后运行不了 err:process:init_windows_dirs directory L"C://windows
- 项目移植[ Windows --> Linux/Unix --> AIX/Solaris ]
- unix->unix/linux操作系统的功能及和windows系统的比较
- Linux&Windows下的IP Multicast 开发
- linux->windows移植注意事项
- linux进程间通信方式 -- 共享内存
- Windows与VMware下的Linux文件共享方式总结
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――共享方式
- Windows & Linux 相同功能软件对应列表(转)
- Linux & Windows
- Windows与Vmware下的Linux文件共享方式总结
- linux&unix软件的安装方式 汇集