当前位置: 首页 > wzjs >正文

宁波自适应网站建设优化建站微信小程序介绍

宁波自适应网站建设优化建站,微信小程序介绍,群晖安装wordpress,做蛋糕招聘网站目录 一、Linux 中主要的进程间通信方式如下: 二、消息队列函数 (1)msgget函数 功能概述 函数原型 参数解释 返回值 示例 结果 问题 (2) msgsnd函数 功能概述 函数原型 参数说明 返回值 示例 结果 (3&#xff0…

目录

一、Linux 中主要的进程间通信方式如下:

二、消息队列函数

(1)msgget函数

功能概述

函数原型

参数解释

返回值

示例

结果

问题

(2) msgsnd函数

功能概述

函数原型

参数说明

返回值

示例

结果

(3)msgrcy函数 

功能概述

函数原型

参数说明

返回值

示例

结果 (与上方的消息队列发送结合)


本篇文章开始前我们先来了解一些基本技术

一、Linux 中主要的进程间通信方式如下:

        管道:包括无名管道和命名管道。无名管道用于具有亲缘关系的进程间单向通信;命名管道可用于不相关进程间的双向通信,通过路径名访问。

        信号:异步通知机制,用于通知进程特定事件发生,进程可自定义信号处理函数或忽略信号。

        共享内存:允许多个进程共享同一块物理内存区域,实现高效的数据交换,需结合信号量等同步机制保证数据一致性。

        消息队列:进程可向队列发送和接收具有特定格式和类型的消息,实现异步、可靠的通信,不同进程可松耦合通信。

        信号量:用于进程间的同步和互斥,通过计数器表示资源可用数量,控制进程对共享资源的访问。

        套接字(socket):网络通信机制,也可用于本地进程间通信,本地通信使用 UNIX 域套接字,提供可靠的双向通信,适用于不同主机或同一主机上不同进程间通信。

注:消息队列、共享内存、信号量数组:生命周期和进程无关,归操作系统直接管理。

二、消息队列函数

(1)msgget函数

功能概述

   msgget 函数的主要功能是创建一个新的消息队列或者获取一个已经存在的消息队列的标识符。消息队列允许不同的进程通过发送和接收消息来进行通信,是一种强大且灵活的进程间通信方式。

函数原型
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>int msgget(key_t key, int msgflg);
参数解释

   key:这是一个用于标识消息队列的id。key 可以是由 ftok 函数生成的键,也可以是特殊值 IPC_PRIVATE

    IPC_PRIVATE:用于创建一个新的、私有的消息队列。这个队列只能由创建它的进程及其子进程访问。

           通过 ftok 生成的键:可以用于多个进程之间共享同一个消息队列。不同的进程使用相同的路径名和项目 ID 调用 ftok 函数,就可以得到相同的 key 值,从而访问同一个消息队列。

    msgflg:这是一个标志位,用于指定消息队列的创建和访问权限。它可以是以下标志的组合。                 

     IPC_CREAT:如果指定的消息队列不存在,则创建一个新的消息队列。

     IPC_EXCL:与 IPC_CREAT 一起使用时,如果消息队列已经存在,则 msgget 调用会失败并返回 -1。权限标志:例如 0666,用于指定消息队列的访问权限,类似于文件的权限设置。

返回值

        成功时,msgget 返回一个非负整数,这个整数就是消息队列的标识符(msgid),后续的 msgsndmsgrcv 等函数将使用这个标识符来操作消息队列。

        失败时,返回 -1,并设置 errno 来指示错误类型。

示例
#include <iostream>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>using namespace std;int main()
{// 如果key不存在就创建新的,如果存在就访问这个已经存在的消息队列int msgid = msgget((key_t)1001, IPC_CREAT | 0777);if (msgid == -1){perror("msgget error");}return 0;
}
结果

问题

        但我们这个有一个问题就是创建了之后就算程序运行结束它也无法消亡我们该怎么办呢。我们使用命令行来查看有哪些方法:

ipcrm -h

第一种办法,使用命令行

ipcrm -Q keyid

第二种办法,直接删除全部

(2) msgsnd函数

功能概述

        msgsnd 是一个在 Unix 和类 Unix 系统中用于消息队列操作的系统调用函数,其主要功能是把消息添加到指定的消息队列里。

函数原型
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
参数说明

   msqid:消息队列的标识符,由 msgget 函数返回。

   msgp:指向消息缓冲区的指针,此缓冲区包含要发送的消息。消息缓冲区的结构通常如下:

struct msgbuf {long mtype;       /* 消息类型,必须大于 0 */char mtext[1];    /* 消息数据 */
};

         msgsz:消息数据部分(mtext)的字节数,但不是结构体长度就是不包含消息类型 mtype

   msgflg:控制函数行为的标志。常见的标志有:

     IPC_NOWAIT:若消息队列已满,函数会立即返回 -1 ,并将 errno 设置为 EAGAIN

       0:若消息队列已满,函数会阻塞,直到有空间可用。

返回值

        若成功,返回 0

        若失败,返回 -1,并设置 errno 来指示错误类型。

示例
#include <iostream>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>using namespace std;typedef struct messagebuf
{long mtype;char mtext[50];
}MSGBUF;int main()
{// 如果key不存在就创建新的,如果存在就访问这个已经存在的消息队列int msgid = msgget((key_t)1001, IPC_CREAT | 0777);if (msgid == -1){perror("msgget error");}else{cout << "msgget success" << endl;MSGBUF buf;buf.mtype = 1;sprintf(buf.mtext, "%s", "hello IPC");if (msgsnd(msgid, &buf, sizeof(buf.mtext), 0) < 0){perror("msgsnd error");}else{cout << "msgsnd success" << endl;}}return 0;
}
结果

(3)msgrcy函数 

注:这是一个阻塞式函数,如果消息队列中没有数据就会阻塞,直到我又发送一个数据到消息队列中才会继续。

功能概述

        它是 Unix 和类 Unix 系统中用于消息队列操作的系统调用,主要功能是从指定的消息队列中接收消息。

函数原型
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
参数说明

        msqid:消息队列的标识符,由 msgget 函数返回。

        msgp:指向消息缓冲区的指针,此缓冲区包含要发送的消息。(与上同)

        msgsz:指定要接收的消息数据部分(mtext)的最大字节数,不包含消息类型 mtype

        msgtyp:指定要接收的消息类型:

      msgtyp == 0:接收消息队列中的第一条消息。

      msgtyp > 0:接收消息类型为 msgtyp 的第一条消息。

      msgtyp < 0:接收消息类型小于或等于 msgtyp 绝对值的最小类型的第一条消息。

        msgflg:控制函数行为的标志,常见的标志有:

      IPC_NOWAIT:如果没有符合条件的消息,函数会立即返回 -1,并将 errno 设置为 ENOMSG

      MSG_EXCEPT(仅在 msgtyp > 0 时有效):接收类型不等于 msgtyp 的第一条消息。

      MSG_NOERROR:如果消息长度超过 msgsz,则截断消息而不产生错误。

返回值

        若成功,返回接收到的消息数据部分(mtext)的字节数。

        若失败,返回 -1,并设置 errno 来指示错误类型。

示例
#include <iostream>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>using namespace std;typedef struct messagebuf
{long mtype;char mtext[50];
}MSGBUF;int main()
{// 如果key不存在就创建新的,如果存在就访问这个已经存在的消息队列int msgid = msgget((key_t)1001, IPC_CREAT | 0777);if (msgid == -1){perror("msgget error");}else{cout << "msgid=" << msgid << endl;MSGBUF buf;if (msgrcv(msgid, &buf, sizeof(buf.mtext), 1, 0) < 0){perror("msgrcv error");}else{cout << "从消息队列中接收数据成功,数据为:" << buf.mtext << endl;}}return 0;
}
结果 (与上方的消息队列发送结合)

数据取走之后,字节数又变成0 

 


文章转载自:

http://p4vB4nDj.hhqjf.cn
http://B3AzOLpC.hhqjf.cn
http://ruFcU18J.hhqjf.cn
http://6fYeAoBd.hhqjf.cn
http://1QMldinK.hhqjf.cn
http://6cKqwJoC.hhqjf.cn
http://d8e6rToX.hhqjf.cn
http://32Hlwrbs.hhqjf.cn
http://v73Az35m.hhqjf.cn
http://HTsexepw.hhqjf.cn
http://bjXRueFA.hhqjf.cn
http://WvuBTSMQ.hhqjf.cn
http://s6GAHfVm.hhqjf.cn
http://oMKrCBhJ.hhqjf.cn
http://VwR6yHA1.hhqjf.cn
http://N1YXNc9r.hhqjf.cn
http://Q864W6yg.hhqjf.cn
http://gWZIoDV2.hhqjf.cn
http://eoVv7oQR.hhqjf.cn
http://hLdJRdfN.hhqjf.cn
http://6jZhknf2.hhqjf.cn
http://FBTSgMZB.hhqjf.cn
http://zA7kp643.hhqjf.cn
http://WYqXntou.hhqjf.cn
http://Q960eGDI.hhqjf.cn
http://v7hIxedF.hhqjf.cn
http://Qd3YxfrP.hhqjf.cn
http://uAriEMwv.hhqjf.cn
http://BipoWPlQ.hhqjf.cn
http://khfhu09D.hhqjf.cn
http://www.dtcms.com/wzjs/671097.html

相关文章:

  • 男女做暧暧网站网站建设合同是否交印花税
  • 同一ip 网站 权重建设银行网站个人银行上不去
  • 做网站会提供源代码中国菲律宾友谊
  • 做网站学哪方面知识某网站做参考文献的书写
  • 网站开发如何跟客户沟通需求指数分布的分布函数
  • 哪种网站语言最好网站改版的意义
  • 电子书网站搭建教程云南省城乡和住房建设厅网站
  • 外贸婚纱网站职业教育网站建设
  • 怎么建设局域网网站专做老酒的网站
  • 网站不备案会有什么影响wordpress增加用户权限
  • 新余网站开发网站建设seo
  • 网站开发技术项目代码搜索珠海建网站的网络公司
  • 重庆梁平网站建设哪家好平面设计接单赚钱平台
  • 手机网站返回顶部代码网站设计免费模板
  • 抖音网站使用密码访问wordpress文章
  • 我的家乡网站建设模板下载做网页收集素材常用的网站有哪些
  • 郑州美容网站建设专门做画册的网站
  • 网站推广的作用是什么做便宜的宝贝的网站
  • 虚拟机可以做两个网站云服务器可以自己搭建吗
  • 怎么建设一个购买卡密的网站网站无法上传图片
  • 网站怎么做利于优化王烨凡
  • ssh框架可以做网站么wordpress 添加角色
  • 中国平面设计和网站建设绍兴网站优化
  • 济南网站公司哪家好求网站建设的视频教程
  • 莆田网站 建设兰州网站建设|兰州网站制作|兰州网站设计公司|兰州网络公司
  • 刚做的网站在百度上搜不到东莞网站设计哪家好
  • 男男做的视频网站济源市建设网站
  • 哪个网站专门做游戏脚本智慧团建网站密码格式
  • 龙岩做网站的项目介绍ppt模板
  • 网站建设一对一培训班wordpress 上传资源