SystemV-IPC

这里记录的三种SystemV-IPC包括(消息队列,信号量以及共享内存)

1:标识符和键值

  键值(key_t) : IPC结构的外部名(所谓外部名就是各用户进程可获得并操作的,通过它使用XXXget获得IPC结构的内部名"标识符").

键值是key_t数据类型,可以通过ftok函数获得,原型: key_t  ftok(const chat *path,  int id); ftok函数将一个已存在的路径名path和一个整数id(0~255)组合成一个key_t数据返回。

  标识符 : IPC结构的内部名,是内核通过XXXget函数返回的,它标识了系统中唯一一个IPC结构,通过标识符来进行进程间的数据通信

有几种方法让不同进程通过操作同一个IPC来进行通信:

  1:服务器进程使用IPC_PRIVATE键来替代用ftok来产生的键,通过XXXget获得返回的标识符,将标识符保存在一个文件中,此后要和服务器进程进行通信的进程通过打开此公知的文件获得标识符。

  2:IPC_PRIVATE也可以用于父子进程中,父进程创建IPC结构获得标识符,子进程拿到标识符通过exec传递标识符到新程序,那么新程序就可以使用此标识符和父进程进行通信。

  3:在公共文件中定义好path和id,让要互相通信的进程获得path和id通过ftok生成key来找到IPC来进行通信。

2:消息队列

  打开一个已存在的队列或者创建一个新的队列:

  原型 : int msget(key_t  key,  int  flag);

  参数 :

     key : 由ftok返回的或者是宏IPC_PRIVATE,如果是IPC_PRIVATE就一定是创建一个新的IPC队列

    flag :

  

时间: 2024-10-29 20:01:32

SystemV-IPC的相关文章

进程间通信——XSI IPC之消息队列

进程间通信XSI IPC有3种:消息队列.共享内存.信号量.它们之间有很多相似之处,但也有各自的特殊的地方.消息队列作为其中比较简单的一种,它会有些什么东西呢,来一起探讨探讨.. 消息队列结构 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法. 每个数据块都被认为是一个类型,接受进程接收的数据块可以有不同的类型值. 我们可以通过发送消息来避免命名管道的同步和阻塞问题. 消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先入先出. 命名管道:

K8S基础概念

一.核心概念 1.Node Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod.Node上运行着Kubernetes的Kubelet.kube-proxy服务进程,这些服务进程负责Pod的创建.启动.监控.重启.销毁.以及实现软件模式的负载均衡. Node包含的信息: Node地址:主机的IP地址,或Node ID. Node的运行状态:Pending.Running.Terminated三种状态. Node Condition:- No

linux同步与通信

这几天读完了UNP v2,对进程间通信与同步的方式有所了解,现对主要的知识点总结如下: 根据出现的历史,先有的管道,FIFO,信号,然后是systemV IPC,再是后来的Poxis IPC,systemV IPC是内核持续性的,而Poxis根据实现不同有的是内核有的是文件系统持续性. 管道:分为管道和FIFO, 管道一般用于父子进程,不能跨进程传输,FIFO可以在文件系统上建立对象,属于一种文件类型(用p标识),可跨进程通信.他们的内容是进程持久性的,也就是说当进程结束时,管道中的内容都丢失了

kubernetes容器编排系统介绍

版权声明:本文由turboxu原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/152 来源:腾云阁 https://www.qcloud.com/community Kubernetes作为容器编排生态圈中重要一员,是Google大规模容器管理系统borg的开源版本实现,吸收借鉴了google过去十年间在生产环境上所学到的经验与教训. Kubernetes提供应用部署.维护. 扩展机制等功能,利用Kubernetes能方

一起talk C栗子吧(第九十五回:C语言实例--使用共享内存进行进程间通信一)

各位看官们,大家好,上一回中咱们说的是SystemV IPC结构概述的例子,这一回咱们说的例子是:使用共享内存进行进程间通信.闲话休提,言归正转.让我们一起talk C栗子吧! 共享内存是SystemV IPC结构这种抽象概念的一种具体对象.就和它的名字一样,它提供了一段内存空间供不同的进程使用,进程之间可以通过该内存空间传递数据,进而实现进程间的通信. 在介绍共享内存的使用方法之前,我们先介绍几个函数,这些函数都是用来操作共享的内存的. shmget函数 int shmget(key_t ke

linux 并发 RCU

What is RCU, Fundamentally? https://lwn.net/Articles/262464/ If you can fill the unforgiving secondwith sixty minutes worth of distance run,“Highly scalable” your code will be reckoned,And—which is more—you'll have parallel fun! With apologies to Rud

Docker集群管理系统Kubernetes

一.Kubernetes简介 Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,利用Kubernetes能方便地管理跨机器运行容器化的应用.而且Kubernetes支持GCE.vShpere.CoreOS.OpenShift.Azure等平台上运行,也可以直接部署在物理主机上. 二.Kubernetes架构 1. Pod 在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成

《两地书》--Kubernetes(K8s)基础知识(docker容器技术)

大家都知道历史上有段佳话叫“司马相如和卓文君”.“皑如山上雪,皎若云间月”.卓文君这么美,却也抵不过多情女儿薄情郎. 司马相如因一首<子虚赋>得汉武帝赏识,飞黄腾达之后便要与卓文君“故来相决绝”,寄来给家乡留守的妻子一封<两地书>,上面只有一行数字:“一二三四五六七八九十百千万.”意义是:无亿,我已经无意于你啦. 卓文君看了这封信也不示弱,回了一首<怨郎诗>,司马相如看了发现虽然我是靠写诗吃饭的.要说写诗还是我媳妇厉害,于是亲自将卓文君迎回长安. 卓文君其实是个二婚.头

kubernetes(k8s) 基础概念

K8S基础概念 1.Node Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod.Node上运行着Kubernetes的Kubelet.kube-proxy服务进程,这些服务进程负责Pod的创建.启动.监控.重启.销毁.以及实现软件模式的负载均衡. Node包含的信息: Node地址:主机的IP地址,或Node ID. Node的运行状态:Pending.Running.Terminated三种状态. Node Condition:- N

一文带你看透kubernetes 容器编排系统

本文由云+社区发表 作者:turboxu Kubernetes作为容器编排生态圈中重要一员,是Google大规模容器管理系统borg的开源版本实现,吸收借鉴了google过去十年间在生产环境上所学到的经验与教训. Kubernetes提供应用部署.维护. 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用.当前Kubernetes支持GCE.vShpere.CoreOS.OpenShift.Azure等平台,除此之外,也可以直接运行在物理机上.kubernetes是一个开