标签:套接字 队列 版本号 posix信号量 调用 线程间通信 pip 记录 osi
E、进程控制:有些进程希望全然控制还有一个进程的运行(如Debug进程)。此时控制进程希望可以拦截还有一个进程的全部陷入和异常。并可以及时知道它的状态改变。
本地的进程间通信(IPC)有非常多种方式。但能够总结为以下4类:
A、消息传递(管道、FIFO、消息队列)
B、同步(相互排斥量、条件变量、读写锁、文件和写记录锁、信号量)
C、共享内存(匿名的和具名的)
D、远程过程调用(Solaris门和Sun RPC)
对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件公布中心)在进程间通信方面的側重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”。通信进程局限在单个计算机内。后者则跳过了该限制。形成了基于套接口(socket)的进程间通信机制,通信进程作用在同一个网内的计算机内。
Linux则把两者继承了下来。
System V IPC包含:System V消息队列、System V信号量、System V共享内存区;
最初的Unix IPC包含:管道、FIFO、信号。
Posix IPC包含: Posix消息队列、Posix信号量、Posix共享内存区。
有两点须要简单说明一下:
1)因为Unix版本号的多样性,电子电气project协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(POSIX)。
现有大部分Unix和流行版本号都是遵循POSIX标准的。而Linux从一開始就遵循POSIX标准;
2)BSD并非没有涉足单机内的进程间通信(socket本身就能够用于单机内的进程间通信)。
三、linux下进程间通信的几种主要手段简单介绍:
有足够权限的进程能够向队列中加入消息。被赋予读权限的进程则能够读走队列中的消息。
消息队列克服了信号承载信息量少,管道仅仅能承载无格式字节流以及缓冲区大小受限等缺点。
注:
Linux进程间通信:管道、信号、信号量、消息队列、共享内存、套接字(socket)
Linux线程间通信:相互排斥量(mutex),信号量。条件变量
Windows进程间通信:管道、消息队列、共享内存、信号量 (semaphore) 、套接字(socket)
Windows线程间通信:相互排斥量(mutex),信号量(semaphore)、临界区(critical section)、事件(event)
标签:套接字 队列 版本号 posix信号量 调用 线程间通信 pip 记录 osi
原文地址:http://www.cnblogs.com/gccbuaa/p/6816295.html