![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
IPC(单机)0
影子尤利金
这个作者很懒,什么都没留下…
展开
-
Linux ipc之信号量的理解
信号量与已经介绍过的IPC结构不同,它不携带信息,作用在于管理。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。信号量相当于一个钥匙,自己用钥匙开门进去后,其他人没有钥匙则进不去,必须等待自己出来才能取得钥匙进入,房间则是一个临界资源(如打印机等,需要有一个排队的过程)。信号量集:多个信号量P操作:拿钥匙V操作:放回钥匙原型:1.创建或获取一个信号量组:成功返回信号量集ID,失败返回-1 int semget(key_t key,int num_sems,int s原创 2021-08-13 16:32:57 · 175 阅读 · 0 评论 -
Linux ipc 之共享内存的理解
共享内存。(对比前3种,比较先进,用的多)原理:A进程,B进程都有自己独立的存储空间在内存当中有一块公共的内存,这内存的地址对A来说可以挂的到,A可以把内存的地址拿到,B也可以拿到,A和B面向同一个物理空间。把A里面的指针指向共享内存,即可操作内存里的数据: int* p = 共享内存打印内容printf("%s",p); 或 B写入字符串 strcpy("p","hi");步骤:1.创建或打开共享内存-------shmget2.映射--------------------原创 2021-08-12 21:57:12 · 114 阅读 · 0 评论 -
Linux ipc 之消息队列的理解
消息队列。(前面两种管道通信的方式都是半双工的方式,作用有一些限制,只能一端读一端写,消息队列针对管道来说的话,功能会多一点,它可以互发)消息队列实现的原理:两个进程A,B运行在操作系统中,见下图消息队列是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。特点:1.消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。2.消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。3.消息队列可以实现消息的随机查询,消息不一定要以先进先出原创 2021-08-12 18:30:08 · 159 阅读 · 0 评论 -
Linux ipc 之有名管道的理解
FIFO,也称为命名管道,它是一种文件类型。(可用 ls-l 查看)。特点1.FIFO可以在无关的进程之间交换数据,与无名管道不同。2.FIFO有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中。原型 #include <sys/stat.h> // 返回值:成功返回0,出错返回-1 int mkfifo(const char *pathname, mode_t mode);int main(){ if(mkfifo("./file",0600) <原创 2021-08-12 13:21:21 · 98 阅读 · 0 评论 -
Linux ipc 之无名管道的理解
无名管道,是UNIX系统中IPC最古老的形式。特点1.半双工(即数据只能在一个方向上流动)。具有固定的读端和写端。2.只能用于具有亲缘关系的进程之间的通信3.可以看成是一种特殊的文件,对于它的读写也可以使用普通的read,write等函数。但它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。同一时间单向,管道里数据读走就没有了(和自来水管很像)原型: int pipe(int fd[2]); 创建一个无名管道,成功返回0,失败返回-1. 参数是整型数的数组原创 2021-08-12 12:34:09 · 153 阅读 · 0 评论