进程间通信:管道与信号量
1. 进程间数据传递之管道
在进程间传递数据时,管道是一种常用的方式。管道分为无名管道和命名管道。
1.1 无名管道
无名管道可以通过 popen 或 pipe 调用创建。借助管道和 dup 调用,能将一个程序的数据传递到另一个程序的标准输入。
1.2 命名管道
命名管道可用于在不相关的程序之间传递数据。
1.3 客户端/服务器示例
利用FIFOs(先进先出队列),不仅能实现进程同步,还能实现双向数据流。
2. 信号量、共享内存和消息队列概述
AT&T System V.2版本的UNIX引入了一组进程间通信(IPC)设施,常被称为System V IPC。这些设施包括:
- 信号量:用于管理对资源的访问。
- 共享内存:实现程序间高效的数据共享。
- 消息传递:提供一种简单的程序间数据传递方式。
3. 信号量详解
3.1 信号量的背景和作用
在多用户系统、多处理系统或两者结合的环境中编写使用线程的程序时,常常会遇到关键代码段,需要确保单个进程或线程对资源具有独占访问权。信号量的编程接口较为复杂,但可以简化以解决大多数信号量编程问题。
例如,在使用 dbm 访问数据库时,如果多个程序同时更新数据库,数据可能会损坏。执行数据更新的代码段就是关键部分,需要独占执行。
进程间通信:管道与信号量详解
超级会员免费看
订阅专栏 解锁全文
1290

被折叠的 条评论
为什么被折叠?



