linux进程间通信(IPC 工具)

0.简介

IPC工具分为3类:

通信:即进程间数据的交换。

同步:即进程和线程操作的先后顺序控制。

信号:可以作为进程间同步、数据交换的一种技术。

如图:

 

 IPC通信可以分为两类:数据传输工具和共享内存,数据传输是一端用户程序将数据写入内核,另一端的用户程序从内核取出数据。共享内存,允许进程间将数据放入共享内存中完成数据交换,速度最快。

IPC同步技术有:信号量、文件锁、互斥体与条件变量。

在程序中使用这些工具,都有唯一的标识符进行区分,如下图:

 

  这些IPC工具在程序中使用可访问和持久性如下表:

 

 1.管道与FIFO

管道是非常古老的IPC方法,在shell命令行也用过。

例如:ls | wc -l

这个命令就是创建两个进程执行ls和wc命令,将执行ls命令的进程标准输出连接到管道的写入端,执行wc命令的进程将标准输入连接到管道的读出端。一个管道是一个字节流,且只能按顺序读写,不能随机读写,管道是单向的(也有双向管道,替换方案是 UNIX domain 流socket对),可以确保在一个时刻写入不超过PIPE_BUF(4096)字节的操作都是原子的,管道的储存能力为65536字节。

创建管道:

#include<unistd.h>
int pipe(int filefds[2]); //0 success,-1 error ,filefds[0] read,filefds[1] write

 

posted @   jest549  阅读(567)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示