广西区建设厅网站小制作的制作过程

news/2025/9/23 1:09:12/文章来源:
广西区建设厅网站,小制作的制作过程,合肥seo推广公司,如何用工控做网站Posix在线文档#xff1a; The Single UNIX Specification, Version 2 (opengroup.org) Linux系统中提供了两种不同接口的消息队列#xff1a; POSIX消息队列。POSIX为可移植的操作系统接口。System V消息队列。System V 是 ATT 的第一个商业UNIX版本(UNIX System III)的… Posix在线文档 The Single UNIX Specification, Version 2 (opengroup.org) Linux系统中提供了两种不同接口的消息队列 POSIX消息队列。POSIX为可移植的操作系统接口。System V消息队列。System V 是 ATT 的第一个商业UNIX版本(UNIX System III)的加强。 其中POSIX消息队列可移植性较强使用较广。 Linux系统中提供的消息队列一般应用于进行间通信但也可以用于线程间通信。 本文介绍POSIX消息队列应用于线程间通信。 相关API Linux内核提供了一系列函数来使用消息队列 /*** brief 创建消息队列实例** Detailed function description** param[in] name: 消息队列名称* param[in] oflag根据传入标识来创建或者打开一个已创建的消息队列- O_CREAT: 创建一个消息队列- O_EXCL: 检查消息队列是否存在一般与O_CREAT一起使用- O_CREAT|O_EXCL: 消息队列不存在则创建已存在返回NULL- O_NONBLOCK: 非阻塞模式打开消息队列不存在返回NULL- O_RDONLY: 只读模式打开- O_WRONLY: 只写模式打开- O_RDWR: 读写模式打开* param[in] mode访问权限* param[in] attr消息队列属性地址** return 成功返回消息队列描述符失败返回-1错误码存于error中*/ mqd_t mq_open(const char *name, int oflag, mode_t mode, struct mq_attr *attr);/*** brief 无限阻塞方式接收消息** Detailed function description** param[in] mqdes: 消息队列描述符* param[in] msg_ptr消息体缓冲区地址* param[in] msg_len消息体长度长度必须大于等于消息属性设定的最大值* param[in] msg_prio消息优先级** return 成功返回消息长度失败返回-1错误码存于error中*/ mqd_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio);/*** brief 指定超时时间阻塞方式接收消息** Detailed function description** param[in] mqdes: 消息队列描述符* param[in] msg_ptr消息体缓冲区地址* param[in] msg_len消息体长度长度必须大于等于消息属性设定的最大值* param[in] msg_prio消息优先级* param[in] abs_timeout超时时间** return 成功返回消息长度失败返回-1错误码存于error中*/ mqd_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout);/*** brief 无限阻塞方式发送消息** Detailed function description** param[in] mqdes: 消息队列描述符* param[in] msg_ptr待发送消息体缓冲区地址* param[in] msg_len消息体长度* param[in] msg_prio消息优先级** return 成功返回0失败返回-1*/ mqd_t mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio);/*** brief 指定超时时间阻塞方式发送消息** Detailed function description** param[in] mqdes: 消息队列描述符* param[in] msg_ptr待发送消息体缓冲区地址* param[in] msg_len消息体长度* param[in] msg_prio消息优先级* param[in] abs_timeout超时时间** return 成功返回0失败返回-1*/ mqd_t mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout);/*** brief 关闭消息队列** Detailed function description** param[in] mqdes: 消息队列描述符** return 成功返回0失败返回-1*/ mqd_t mq_close(mqd_t mqdes);/*** brief 分离消息队列** Detailed function description** param[in] name: 消息队列名称** return 成功返回0失败返回-1*/ mqd_t mq_unlink(const char *name);消息队列的名称类似于设备文件mq_open通过名称打开对应的消息队列然后返回一个消息队列描述符之后的操作都是引用返回的描述符类似于打开文件时返回的文件描述符。 其实和文件的打开、读写、关闭都非常类似。 ​POSIX消息队列允许进程以消息的形式交换数据。 消息队列是使用mq_open创建和打开的此函数返回消息队列描述符(mqd_t)该描述符用于在以后的调用中引用打开的消息队列。每个消息队列由/somename形式的名称标识该名称由一个初始斜杠组成后跟一个或多个字符(都不是斜杠)。通过将相同的名称传递给mq_open两个进程可以在同一队列上进行操作。 使用mq_send和mq_receive在队列之间来回传送消息。当进程使用完队列后可以使用mq_close关闭该队列而当不再需要该队列时可以使用mq_unlink将其删除。可以使用mq_getattr和mq_setattr检索和修改队列属性(在某些情况下)。进程可以使用mq_notify请求异步通知消息到达先前为空的队列。 ​ 消息队列可以认为是一个链表。进程线程可以往里写消息也可以从里面取出消息。一个进程可以往某个消息队列里写消息然后终止另一个进程随时可以从消息队列里取走这些消息。这里也说明了消息队列具有随内核的持续性也就是系统不重启消息队列永久存在。 几个主要函数可进一步参考 mq_open MQ_OPEN - Linux手册页-之路教程 (onitroad.com) mq_send MQ_SEND - Linux手册页-之路教程 (onitroad.com) mq_receive MQ_RECEIVE - Linux手册页-之路教程 (onitroad.com) mq_close MQ_CLOSE - Linux手册页-之路教程 (onitroad.com) 相关头文件如下 #include fcntl.h           /* For O_* constants */ #include sys/stat.h        /* For mode constants */ #include mqueue.h 注意事项 参考 POSIX 消息队列函数(mq_open、mq_getattr、mq_send、mq_receive)示例_mqreceivetest-CSDN博客 关于消息队列mq_open的属性参数 指向attr的struct mq_attr字段指定队列允许的最大消息数和最大消息大小。此结构定义如下 struct mq_attr {     long mq_flags;       /* Flags (ignored for mq_open()) */     long mq_maxmsg;      /* Max. # of messages on queue */     long mq_msgsize;     /* Max. message size (bytes) */     long mq_curmsgs;     /* # of messages currently in queue(ignored for mq_open()) */ }; mq_maxmsg指的是容纳的消息数也就是消息队列的缓冲大小msgsize指的是每个消息的大小mq_maxmsg貌似并没有那么重要因为消息队列是以流的形式来发送和接收的。两个参数的乘积就是消息队列的总容量。 调用mq_open()时仅使用mq_maxmsg和mq_msgsize字段其余字段中的值将被忽略。 如果attr为NULL则使用默认属性创建队列。 关于消息队列名称 资料中说消息队列名称要写斜杠/开头但是我看有的程序里并没有而是一个单纯的字符串为啥 经过测试在Linux 2.6.18中所创建的POSIX消息队列不会在文件系统中创建真正的路径名。且POSIX的名字只能以一个’/’开头名字中不能包含其他的’/’。 比如不符合的情况 报错 对应的错误如下 另外需要注意以下几点 1、 mq_receive() 的第三个参数表示读取消息的长度不能小于能写入队列中消息的最大大小即一定要大于等于该队列的 mq_attr 结构中 mq_msgsize 的大小。也就是最少要读一个消息。 2、 消息的优先级它是一个小于 MQ_PRIO_MAX 的数数值越大优先级越高。 POSIX 消息队列在调用 mq_receive 时总是返回队列中最高优先级的最早消息。如果消息不需要设定优先级那么可以在 mq_send 是置 msg_prio 为 0 mq_receive 的 msg_prio 置为 NULL。因为mq_send的优先级是以变量的形式传递的而mq_receive是以指针的形式传递的。 3、 默认情况下mq_send和mq_receive是阻塞进行调用可以通过mq_setattr来设置为O_NONBLOCK如 struct mq_attr new_attr; mq_getattr(mqID, new_attr);//获取当前属性 new_attr.mq_flags O_NONBLOCK;//设置为非阻塞 mq_setattr(mqID, new_attr, NULL)//设置属性 4、 mq_getattr用于获取当前消息队列的属性mq_setattr用于设置当前消息队列的属性。其中mq_setattr中的oldattr用于保存修改前的消息队列的属性可以为空。 mq_setattr可以设置的属性只有mq_flags用来设置或清除消息队列的非阻塞标志。newattr结构的其他属性被忽略。mq_maxmsg和mq_msgsize属性只能在创建消息队列时通过mq_open来设置。mq_open只会设置该两个属性忽略另外两个属性。mq_curmsgs属性只能被获取而不能被设置。 5、 mq_send和mq_recevie的第二个参数也就是数据指针是char *类型的需要时做个强转。 6、 使用POSIX消息队列API的程序必须使用cc -lrt进行编译以链接到实时库librt。 gcc pthread_5.c -o obj -lpthread -lrt Linux编译命令-pthread -lpthread - 邗影 - 博客园 (cnblogs.com) linux的各种自带库-lz -lrt -lm -lc都是什么库_lm是什么库-CSDN博客 7、 消息队列无需init初始化只用在第一次mq_open打开时创建即可。 8、 Posix消息队列就是先进先出但是可以通过优先级来让紧急数据插队。 使用示例 常规示例代码如下  #include stdio.h #include pthread.h #include stdlib.h #include unistd.h #include semaphore.h #include fcntl.h /* For O_* constants */ #include sys/stat.h /* For mode constants */ #include mqueue.h #include errno.h#define MQ_NAME /thisIsOneMqNamestatic void *thread_fun1(void *param) {mqd_t mqfd;struct mq_attr attr;int count;attr.mq_maxmsg 1;attr.mq_msgsize sizeof(int);mqfd mq_open(MQ_NAME, O_WRONLY | O_CREAT, 0666, attr);if(mqfd 0){printf(mq_open errno is %d\n, errno);exit(-1);}while(1){count 10;mq_send(mqfd, (char *)count, sizeof(int), 0);}return NULL; }static void *thread_fun2(void *param) {mqd_t mqfd;int count;mqfd mq_open(MQ_NAME, O_RDONLY);if(mqfd 0){printf(mq_open errno is %d\n, errno);exit(-1);}while(1){mq_receive(mqfd, (char *)count, sizeof(int), NULL);printf(count is %d\n, count);if(count 100){exit(0);}}return NULL; }int main(int argc, char *argv[]) {pthread_t tid1, tid2;int ret;ret pthread_create(tid1, NULL, thread_fun1, NULL);if (ret 0){printf(ERROR; return code from pthread_create() is %d\n, ret);exit(-1);}ret pthread_create(tid2, NULL, thread_fun2, NULL);if (ret 0){printf(ERROR; return code from pthread_create() is %d\n, ret);exit(-1);}pthread_exit(NULL); } 更多待补充

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

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

相关文章

呼和浩特 的网站建设上海专业网站建设网

这是记录前端面试的话术集锦第十五篇博文——高频考点(React常考进阶知识点),我会不断更新该博文。❗❗❗ 1. HOC 是什么?相比 mixins 有什么优点? 很多人看到高阶组件(HOC)这个概念就被吓到了,认为这东西很难,其实这东西概念真的很简单,我们先来看一个例子: func…

如何做一名合格的网站人静态网页设计与制作

🌈个人主页:SKY-30 ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 &…

建立网站大概需要多长时间丹阳火车站片区规划

非类型模板参数 模板参数分为类型形参与非类型形参 。 类型形参即:出现在模板参数列表中,跟在 class 或者 typename 之类的参数类型名称 。 非类型形参,就是用一个常量作为类 ( 函数 ) 模板的一个参数,在类 ( 函数 ) 模板中可将…

网站专题怎么做呢广州页面制作公司

从 NS-10M 监听音箱到 MSP 系列和 HS 系列,雅马哈始终秉持忠实的设计理念,聚焦声学精度,为音频专家提供出色的平台,构建并成就他们专属的专业之声。MT7录音室监听耳机承袭了这一基本研发理念,重现最为精细的声音,力求满…

capacitor的android项目接入穿山甲遇到的坑

Caused by: java.lang.ClassNotFoundException: Didnt find class "com.bytedance.sdk.openadsdk.TTFileProvider" on path: DexPathList[[zip file "/data/app/~~Ol1vZKiGBPJT4eFuTS5Zyw==/org.capaci…

网站建设的看法有哪些后端和前端哪个前景好

一.四种模型 阻塞式IO,非阻塞式IO,信号驱动IO,IO多路复用 二.阻塞式IO 特点:最简单,最常用,效率低 阻塞I/O 模式是最普遍使用的I/O 模式 系统默认状态,套接字建立后所处于的模式就是阻塞I/O 模式…

网站建设运营策划方案建站行业乱象完整版

文章目录 0 引入1、带有标尺的温度/湿度计控件1.头文件2.核心代码 2、竖起来的温度/湿度计控件1.头文件2.实现 3、引用 0 引入 QT原生控件没有实现如仪表盘或者温度计的控件,只好自己实现,文章代码部分参考引用的文章。直接上图 图一 带有标尺的温度计…

新建网站的步骤阿里云搜索引擎入口

目录 前言 一、fsck命令 1、HDFS副本块数量的配置 2、fsck命令查看文件的副本数 3、block配置 二、NameNode元数据 1、edits文件 2、fsigame文件 3、NameNode元数据管理维护 4、元数据合并控制参数 5、SecondaryNameNode的作用 三、HDFS数据的读写流程 1、数据写入…

网络优化推广 网站开发建设重庆seo优化公司

正文 大约在五六年前,第一次接触到了当时已经是hot topic的NoSql。不过那个时候学的用的都是mysql,Nosql对于我而言还是新事物,并没有真正使用,只是不明觉厉。但是印象深刻的是这么一张图片(后来google到图片来自这里&…

做网站需要多少带宽点播视频网站怎么建设

实验报告题目: 内核模块实验1、实验目的模块是Linux系统的一种特有机制,可用以动态扩展操作系统内核功能。编写实现某些特定功能的模块,将其作为内核的一部分在管态下运行。本实验通过内核模块编程在/porc文件系统中实现系统时钟的读操作接口。2、实验内…

怎么区分营销型网站个人宽带 架设网站需备案

本文翻译自 Reduce the scope and complexity of style calculations,作者:Jeremy Wagner, 略有删改。 JavaScript通常用来改变页面的视觉效果。比如通过改变style样式或者通过计算后改变页面布局,比如搜索或排序数据。长时间运行…

增加网站访客wordpress蜘蛛插件

一、环境QT版本:QT 5.8.0(msvc2013_64)MySQL版本:mysql 5.7.19二、配置之前 mysql 数据库一直都连接不上,网上也搜了很多资料,主要还是库文件的问题。重新将 mysql.pro 编译一下,将生成的 .dll 和 .lib 文件拷贝到 QT …

做深度报道的网站沪尚茗居装修口碑怎么样

档案馆展厅设计的特色化不仅可以增强参观者的体验感,还可以更好地展现档案馆的历史文化价值。 在设计档案馆展厅时,我们可以通过以下几个方面来让其更具特色: 一、主题明确 首先,确定展厅的主题是关键。可以是档案馆的历史沿革…

北京网站建设 shwl虚拟机wordpress建站

0、国内 GitHub 被爆造假,起底背后的黑色产业链作为全球最大的开源社区,GitHub 对于程序员群体而言像是空气般重要的存在,而互联网公司也会通过 GitHub 来进一步了解面试者的编程习惯,技术水平等。但最近知乎上有一篇《中国内地 G…

网页与网站之间的关系做网站的域名怎么申请

引入 今日概要 图片懒加载seleniumphantomJs谷歌无头浏览器知识点回顾 验证码处理流程今日详情 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding:utf-8 …

新手做站必看 手把手教你做网站免费域名网站黄

Mysql数据库 ⽬前关系数据库有六种范式: 第⼀范式(1NF)、第⼆范式(2NF)、第三范式(3NF)、巴斯-科德范式 (BCNF)、第四范式(4NF)和第五范式(5NF&a…

php企业网站cms网站设计流程详细步骤

YOLOv8n原图检测YOLOv8n增强后检测召回率和置信度都有提升 前言 这篇博客讲讲低照度,大家都催我出一些内容,没想到这么多同学搞这个,恰好我也做过这方面的一些工作,那今天就来讲解一些方法,低照度的图像增强大体分“传统算法”和“深度学习算法”; 目前低照度的图像增…

手机seo网站推广seo型网站

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 ​编辑 ​编辑 4.1 对比一组函数: ​编辑 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind…

网站建设公司应该怎么转型wordpress 调用豆瓣

每个优秀的程序员都喜欢编写简洁但有效且经过优化的代码。 类型推断是JDK 7中引入的一种方法,它肯定会为您带来更少键入的好处。 您以以下方式使用Java代码已有很长时间了。 但是,在初始化Collections的特定实现时,您是否曾经想到过代码重复&…

云建站平台哪家好濮阳网络电视直播

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型22-基于pytorch搭建SimpleBaseline(人体关键点检测)模型,并详细介绍该网络模型与代码实现。本文将介绍关于SimpleBaseline模型的原理,以及利用pytorch框架搭建模型…