进程间通信(一)

1 消息队列

  消息队列是消息的链接表 , 存放在内核中并由消息队列标识符标识。

  m s g g e t用于创建一个新队列或打开一个现存的队列。

  m s g s n d用于将新消息添加到队列尾端。

  m s g r c v用于从队列中取消息。

  调用的第一个函数通常是m s g g e t,其功能是打开一个现存队列或创建一个新队列。

 

 

2信号

 

 

3共享存储

(1)int shmget(key_t key, int size, int shmflg),开辟或使用一块共享内存。

(2)void *shmat(int shmid, const void *shmaddr, int shmflg), 将参数shmid所指向的共享内存与当前进程连接。当使用某共享内存时,需要先使用shmat,达成连接。

(3)int shmdt(const void *shmaddr),将先前用shmat连接的共享内存与当前进程解除连接。参数shmaddr为shmat返回的共享内存的地址。在完成对共享内存的使用后,需要使用shmdt解除连接。

(4)int shmctl(int shmid, int cmd, struct shmid_ds *buf),控制内存的操作。当cmd为IPC_RMID时,删除shmid所指的共享内存。

 代码示例:

#include "ourhdr.h"
#include <sys/shm.h>#define	ARRAY_SIZE	40000
#define	MALLOC_SIZE	100000
#define	SHM_SIZE	100000
#define	SHM_MODE	0600	/* user read/write */char	array[ARRAY_SIZE];	/* uninitialized data = bss */int
main(void)
{int		shmid;char	*ptr, *shmptr;printf("array[] from %lx to %lx\n", (unsigned long)&array[0],(unsigned long)&array[ARRAY_SIZE]);printf("stack around %lx\n", (unsigned long)&shmid);if ((ptr = malloc(MALLOC_SIZE)) == NULL)err_sys("malloc error");printf("malloced from %lx to %lx\n", (unsigned long)ptr,(unsigned long)ptr+MALLOC_SIZE);if ((shmid = shmget(IPC_PRIVATE, SHM_SIZE, SHM_MODE)) < 0)err_sys("shmget error");if ((shmptr = shmat(shmid, 0, 0)) == (void *)-1)err_sys("shmat error");printf("shared memory attached from %lx to %lx\n",(unsigned long)shmptr, (unsigned long)shmptr+SHM_SIZE);if (shmctl(shmid, IPC_RMID, 0) < 0)err_sys("shmctl error");exit(0);
}

  

转载于:https://www.cnblogs.com/huanhuanang/p/4444311.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Asp.NET Core一个接口的多个实现如何基于当前HTTP请求注册

前言假设我们有三个Service类实现了同一接口&#xff0c;示例代码如下&#xff1a;public interface IService { } public class ServiceA : IService { } public class ServiceB : IService { } public class ServiceC : IService { }我们希望在运行时使用依赖注入指定其具体…

Loadrunner 接口测试方法

其实无论用那种测试方法&#xff0c;接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文&#xff0c;服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端&#xff0c;客户端接收应答报文这一个过程。一、基于通用http/html请求大家都知道LoadRun…

React Native之react-native bundle --platform android --dev false --entry-file index.js --bundle失败

1 问题 react native项目在assert目录下面生成index.android.bundle文件用下面的命令 react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/r…

pytorch forward_【Pytorch部署】TorchScript

TorchScript是什么&#xff1f;TorchScript - PyTorch master documentation​pytorch.orgTorchScript是一种从PyTorch代码创建可序列化和可优化模型的方法。任何TorchScript程序都可以从Python进程中保存&#xff0c;并加载到没有Python依赖的进程中。我们提供了一些工具来增量…

兼容ie8 rgba()用法

今天遇到了一个问题&#xff0c;要在一个页面中设置一个半透明的白色div。这个貌似不是难题&#xff0c;只需要给这个div设置如下的属性即可&#xff1a; background: rgba(255,255,255,.1); 但是要兼容到ie8。这个就有点蛋疼了。因为ie8不支持rgba()函数。下面我们总结一下rgb…

hdu水仙花

水仙花数Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 11 Accepted Submission(s) : 6 Problem Description 春天是鲜花的季节&#xff0c;水仙花就是其中最迷人的代表&#xff0c;数学上有个水仙花数&#xff…

python中的标识符能不能使用关键字_Python中的标识符不能使用关键字

Python中的标识符不能使用关键字答&#xff1a;√智慧职教: 检查客室座椅外观良好&#xff0c;确认?无破损答&#xff1a;坐垫 靠背关于投标报价时综合单价的确定&#xff0c;下列做法中正确的是()答&#xff1a;以项目特征描述为依据确定综合单价城市总体规划调查时&#xff…

C# WPF实战项目升级了

概述之前用Caliburn.Micro搭建的WPF实战项目&#xff0c;CM框架选用了 3.0.3&#xff0c;实际上CM框架目前最新版已经到4.0。173了&#xff0c;所有很有必须升级一下项目了. 本来打算把平台框架也直接升级到.NET 6 的&#xff0c;但是项目里面很多库不支持最新的平台版本&#…

Android之通过ContentResolver获取手机图片和视频的路径和生成缩略图和缩略图路径

1 问题 获取手机所有图片和视频的路径和生成图片和视频的缩略图和缩略图路径 生成缩略图我们用的系统函数 public static Bitmap getThumbnail(ContentResolver cr, long origId, int kind, Options options) {throw new RuntimeException("Stub!");} 调用如下 M…

ArcGIS Engine开发模板及C#代码

目 录 1. 模板 2. 代码 1. 模板 以下为AE开发软件自带的模板及代码,开发工具为VS 2012+ArcGIS Engine 10.2。 2. 代码 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; us…

为何解析浏览器地址参数会为null_request 包中出现 DNS 解析超时的探究

事情的起因是这样的&#xff0c;公司使用自建 dns 服务器&#xff0c;但是有一个致命缺陷&#xff0c;不支持 ipv6 格式的地址解析&#xff0c;而 node 的 DNS 解析默认是同时请求 v4 和 v6 的地址的&#xff0c;这样会导致偶尔在解析 v6 地址的时候出现超时。本文链接地址 htt…

高级iOS面试题

非标准答案 2 1: 类方法是可以直接通过类名直接调用&#xff0c;无需进行实例化对象。类方法是以开头2. 实例方法&#xff0c;需要显示实例化对象&#xff0c;为对象分配堆栈空间&#xff0c;并通过对象实例调用实例方法3. RUNTIME 是在程序运行过程动态对实例对象进行操作&…

dotTrace 6.1帮你理解SQL查询如何影响应用性能

dotTrace是JetBrains公司旗下的一款.NET应用程序性能瓶颈检测工具。该工具是ReSharper旗舰版的一部分&#xff0c;也可以单独安装。近日&#xff0c;dotTrace 6.1发布&#xff0c;主要增加了人们期待已久的SQL查询性能分析&#xff0c;开发人员可以通过它获得特定查询的执行时间…

React Native之函数作为参数传递给另外一个函数去调用

1 用法 我们一般喜欢把js里面的函数作为参数传递给另外一个函数,然后再调用这个函数,有点像C语言里面的函数指针 2 代码测试 写了一个函数,2个参数分别是函数,然后更具数据决定调用哪个函数 /*** Sample React Native App* https://github.com/facebook/react-native** form…

STL—list

前面我们分析了vector&#xff0c;这篇介绍STL中另一个重要的容器list list的设计 list由三部分构成&#xff1a;list节点、list迭代器、list本身 list节点 list是一个双向链表&#xff0c;所以其list节点中有前后两个指针。如下&#xff1a; // list节点 template <typenam…

C#语法糖 Null 条件运算符 【?.】

例子比如说:我们有一个UserInformation类public class UserInformation{ public string Name { get; set; }public List<string> Address { get; set; }}有下面一段代码,我们获取张三的第一个地址static void Main(string[] args){UserInformation user new UserInforma…

用单片机测量流体流速的_流量测量的主要方法

电磁流量计由于流量检测的复杂性和多样性&#xff0c;流量检测的方法非常多&#xff0c;常用于工业生产中的有10多种。流量测量与仪表可以分为测量瞬时流量和总流量两类。生产过程中流量大多作为监控参数&#xff0c;测量的是瞬时流量&#xff0c;但在物料平衡和能源计量的贸易…

C#帮助控件HelpProvider的使用

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace 帮助控件的使用 {public partial class Form1 : Form{public Form1(…

mysql申请审核系统_Mysql审核工具archery

Mysql审核工具archery系统&#xff1a;Centos6.8ip:192.168.122.150安装Python和virtualenv编译安装[rootwww ~]# yum install wget gcc make zlib-devel openssl openssl-devel[rootwww src]# wget "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz"[…

iOS——Core Animation 知识摘抄(二)

阴影 主要是shadowOpacity 、shadowColor、shadowOffset和shadowRadius四个属性 shadowPath属性 我们已经知道图层阴影并不总是方的&#xff0c;而是从图层内容的形状继承而来。这看上去不错&#xff0c;但是实时计算阴影也是一个非常消耗资源的&#xff0c;尤其是图层有多个子…