IPC 进程间通信 消息队列
操作系统内核中采用一个链式队列管理消息,每个节点就对应一个消息:
操作系统规定了单个消息的数据长度不能超过8k(8192个字节),一个消息队列的表长(节点数)最多不超过256个
利用消息队列进行通信的特点:
1. 全双工:任何参与通信的进程均可以向消息队列中发送消息(创建并入队一个新节点),也均可以从消息队列中接收消息(出队一个消息并读取该消息的数据)
2. 报式传输:一个被接收下来的消息,如果其数据没有被一次读完,剩余数据会被丢弃
3. 发送、接收消息的函数阻塞还是非阻塞由两个函数的参数决定
相关接口函数:
显然,消息队列适用于消息数据长度定长或最大不超过某值的情况
示例代码:
my_msg.h
#ifndef MY_MSG_H
#define MY_MSG_H#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>struct my_msg{int type; // 消息类型char buf[120];
};#endif
send.c
#include "my_msg.h"int main(int argc,char *argv[]){key_t key;int id = -1;struct my_msg msg;int ret = 0;key = ftok("./send.c",6); // ftok()id = msgget(key,IPC_CREAT | 0666); // msgget(),IPC_CREATif(id < 0){ //失败printf("msgget failed\n");return 1;}msg.type = 99;strcpy(msg.buf,"hello");ret = msgsnd(id,&msg,6,0); // msgsnd()if(ret){printf("msgsnd failed\n");return 2;}return 0;
}
recv.c
#include "my_msg.h"int main(int argc, char *argv[]){key_t key;int id = -1;struct my_msg msg;int ret = 0;key = ftok("./send.c",6); // ftok()id = msgget(key,IPC_CREAT | 0666); // msgget()if(id < 0){printf("magget failed\n");return 1;}ret = msgrcv(id,&msg,20,0,0); // msgrcv()if(ret < 0){printf("msgrsv failed\n");return 2;}printf("%s\n",msg.buf);return 0;
}
输出:
相关文章:

IPC 进程间通信 消息队列
操作系统内核中采用一个链式队列管理消息,每个节点就对应一个消息: 操作系统规定了单个消息的数据长度不能超过8k(8192个字节),一个消息队列的表长(节点数)最多不超过256个 利用消息队列进行通信的特点: 1. 全双工:任何参与通信的…...

opencv 图像翻转- python 实现
在做图像数据增强时会经常用到图像翻转操作 flip。 具体代码实现如下: #-*-coding:utf-8-*- # date:2021-03 # Author: DataBall - XIAN # Function: 图像翻转import cv2 # 导入OpenCV库path test.jpgimg cv2.imread(path)# 读取图片 cv2.namedWindow(image,1) …...

使用DolphinScheduler接口实现批量导入工作流并上线
使用DS接口实现批量导入工作量并上线脚本 前面实现了批量生成DS的任务,当导入时发现只能逐个导入,因此通过接口实现会更方便。 DS接口文档 DS是有接口文档的地址是 http://IP:12345/dolphinscheduler/swagger-ui/index.html?languagezh_CN&lang…...
pycharm导出环境安装包列表
pycharm导出环境安装包列表 一、导出安装包列表二、安装requirements.txt三、列表显示已安装的包四、显示特定包的信息 一、导出安装包列表 pip freeze > requirements.txt二、安装requirements.txt pip install -r requirements.txt三、列表显示已安装的包 pip list四、…...

分体式智能网关在现代电力物联网中的优势有哪些?
随着电力系统的不断数字化和智能化,电力物联网已经成为现代电力行业发展的重要方向。电力物联网通过各种智能设备和传感器实现电力系统的监测、数据采集和分析,从而优化电力资源配置,提高电网的安全性和稳定性。在这个背景下,&quo…...

第14篇:下一代网络与新兴技术
目录 引言 14.1 下一代网络(NGN)的定义与特点 14.2 IPv6协议的改进与未来应用 14.3 软件定义网络(SDN) 14.4 网络功能虚拟化(NFV) 14.5 量子通信网络 14.6 软件定义广域网(SD-WAN&#x…...

物联网数据采集网关详细介绍-天拓四方
一、物联网数据采集网关的概述 物联网数据采集网关,简称数据采集网关,是物联网系统中的重要组成部分,位于物联网设备和云端平台之间。其主要职责是实现数据的采集、汇聚、转换、传输等功能,确保来自不同物联网设备的数据能够统一…...

2024软考网络工程师笔记 - 第10章.组网技术
文章目录 交换机基础1️⃣交换机分类2️⃣其他分类方式3️⃣级联和堆叠4️⃣堆叠优劣势5️⃣交换机性能参数 🕑路由器基础1️⃣路由器接口2️⃣交换机路由器管理方式2️⃣交换机路由器管理方式 交换机基础 1️⃣交换机分类 1.根据交换方式分 存储转发式交换(Store…...
C语言——字符串指针和字符串数组
目录 前言 一、定义区别 1、数组表示 2、指针表示 二、内存管理区别 1.字符数组 2.字符指针 三、操作区别 1、访问与修改 2、遍历 3...... 总结 前言 在C语言中,字符串随处可见,字符串是由字符组成的一串数据,字符串以null字符(\0)结尾&#…...
7-1回文判断(栈和队列PTA)
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。 若用C,可借助STL的容器实现。 输入格式: 输入待判断的字符序列,按回车…...

使用 NCC 和 PKG 打包 Node.js 项目为可执行文件(Linux ,macOS,Windows)
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 文章引言 步骤 1:…...
LeetCode:2747. 统计没有收到请求的服务器数目(滑动窗口 Java)
目录 2747. 统计没有收到请求的服务器数目 题目描述: 实现代码与解析: 滑动窗口 原理思路: 2747. 统计没有收到请求的服务器数目 题目描述: 给你一个整数 n ,表示服务器的总数目,再给你一个下标从 0 开…...
项目管理工具--【项目策划任务书】模板
项目策划任务书是项目管理中的重要文件,它详细描述了项目的各个方面,以确保项目能够顺利进行。撰写项目策划任务书时需要考虑以下几个关键要素: 基本信息:包括项目名称、负责人、所在单位、联系方式以及日期等基本信息,…...

雷池社区版那么火,为什么站长都使用雷池社区版??
雷池社区版是长亭科技开发的一款免费开源的 Web 应用防火墙(WAF),具有诸多优势,因此值得使用。 防护效果强大。能够检测并防御各种网络攻击,包括 SQL 注入、跨站脚本(XSS)、跨站请求伪造&#x…...
分布式日志有哪些?
分布式日志系统(Distributed Logging Systems)是在分布式计算环境中用来收集、存储和管理来自多个节点的日志数据的系统。这些系统通常设计用于处理高并发、大规模的日志数据流,并提供强大的查询和分析功能。 一、定义与背景 分布式系统通常…...

ETCD未授权访问风险基于角色认证和启用https的ca证书修复方案
ETCD未授权访问风险安全漏洞修复方案 ETCD未授权访问风险介绍基于角色认证的访问控制(BASIC认证)基于ca证书的https访问控制(TLS传输)下载cfssl认证配置工具生成ca认证证书修改etcd配置方式一方式二 访问etcd节点信息 patroni使用…...

执行Django项目的数据库迁移命令时报错:(1050, “Table ‘django_session‘ already exists“);如何破?
一、问题描述: 当我们写Django时,由于自己的操作不当,导致执行数据库迁移命令时报错,报错的种类有很多,例如: 迁移文件冲突:可能你有多个迁移文件试图创建同一个表。数据库状态与迁移文件不同…...

问丫:创新社交平台的技术魅力与发展潜力
最近偶然间发现了一个很特别的社交网站,叫问丫。一开始我也只是抱着随便看看的心态去了解一下,没想到这个网站还蛮有意思的。 这个网站是由 LLMWorld 推出的,据说是一款跨时空跨次元的社交新产品。这个描述给网站蒙上了一层魔幻的纱布&#…...
iOS Swift逆向——被编译优化后的函数参数调用约定修复
头文件导入: typedef long long s64; typedef unsigned long long u64;typedef s64 Int; typedef u64 Bool;struct Swift::String {u64 _countAndFlagsBits;void *_object; };union Swift_ElementAny {Swift::String stringElement; };struct Swift_Any {Swift_Ele…...

self-supervised learning(BERT和GPT)
1芝麻街与NLP模型 我們接下來要講的主題呢叫做Self-Supervised Learning,在講self-supervised learning之前呢,就不能不介紹一下芝麻街,為什麼呢因為不知道為什麼self-supervised learning的模型都是以芝麻街的人物命名。 因為Bert是一個非常…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...