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

商务网站规划建设与管理答案千里马招标网站

商务网站规划建设与管理答案,千里马招标网站,北京网站建设的价格,帮别人做网站哪里可以接单概念将信息打包成结点储存在内核缓存区中,进程通过访问内核实现通信特点数据打包成节点(数据类型,数据文本)满足队列的思想(先进先出)在读取后,数据会被删除消息队列是全双工通信机制消息队列不随着进程结束而结束,需要手动删除或…

概念

将信息打包成结点储存在内核缓存区中,进程通过访问内核实现通信

特点

数据打包成节点(数据类型,数据文本)

满足队列的思想(先进先出)

在读取后,数据会被删除

消息队列是全双工通信机制

消息队列不随着进程结束而结束,需要手动删除或重启

消息队列的函数

ftok

#include <sys/types.h>

#include <sys/ipc.h>

key_t ftok(const char *pathname, int proj_id);

功能:把pathname 和proj_id转换为秘钥的

参数: const char *pathname:路径以及文件名 (随便但是需要存在)

            int proj_id:可以写整数,字符(随便)

返回值: 成功返回秘钥,失败返回-1,跟新errno,注意秘钥和stat有关 key=proj_id(低8位)+设备号(低8位)+inode(低16位)

key=ftok(路径,随意写)

msgget

#include <sys/msg.h>

int msgget(key_t key, int msgflg);

功能:创建消息队列

参数:key_t key        密钥,ftok申请

           int msgflg: IPC_CREAT|0664:如果消息队列不存在则创建,如果存在忽略

                              IPC_CREAT| IPC_EXCL | 0664:如果消息队列不存在则创建,如果存在报错EEXIST. 最后几位表示权限,所以实际使用是需要根权限的     

返回值: 成功返回消息队列id,失败返回-1,更新新errno

msqid=msgget(密钥,选择)

msgsnd

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);

功能:发送信息

参数:

int msqid消息队列id
const void *msgp消息包
size_t msgsz消息包内容大小
int msgflg

是否阻塞     0阻塞  

                   IPC_NOWAIT:非阻塞函数报错EAGAIN

返回值:成功返回0,失败返回-1,更新errno

msgrcv

ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg);

功能:接收信息

参数:

int msqid消息队列id
const void *msgp消息包
size_t msgsz消息包内容大小
long msgtyp

=0  第一条消息  >0  读取类型等于msgtyp的第一条信息

<0:读取小于等于msgtype绝对值的第一条信息

int msgflg

是否阻塞     0阻塞  

                   IPC_NOWAIT:非阻塞函数报错EAGAIN

返回值:成功返回成功读取的字节个数,失败返回-1,更新errno

msgctl

int msgctl(int msqid, int cmd, struct msqid_ds *buf);

功能:消息队列控制(删除,获取,修改信息)

参数:

int msqid消息队列id
int cmd

操作指令

IPC_STAT:获取消息队列内核数据的

IPC_SET:修改消息队列数据

IPC_RMID:删除消息队列 ,第三个可以被忽略

struct msqid_ds *buf

该指针存储获取以及修改对应内核的数据

返回值:成功返回0,失败返回-1

队列属性

struct msqid_ds {struct ipc_perm msg_perm;     /* 拥有者和权限 */time_t          msg_stime;    /* 最新一次向消息队列中发送数据的时间 */time_t          msg_rtime;    /* 最新一次消息队列接受数据的时间 */time_t          msg_ctime;    /* 最新一次操作消息队列的时间 */unsigned long   __msg_cbytes; /* 当前队列中已用的字节数 */msgqnum_t       msg_qnum;     /* 当前队列中消息的个数*/msglen_t        msg_qbytes;   /* 队列的最大容量,默认是16K */pid_t           msg_lspid;    /* 最后一次向消息队列中发送消息的进程id号 */pid_t           msg_lrpid;    /* 最后一次从消息队列中取消息的进程id号 */};
对第一个成员的介绍
struct ipc_perm {key_t          __key;       /* 键值 */uid_t          uid;         /* 当前拥有者的用户id号 */gid_t          gid;         /*当前拥有者的组id号 */uid_t          cuid;        /* 创建消息队列的进程的用户id */gid_t          cgid;        /* 创建消息队列进程的组id号 */unsigned short mode;        /* 操作权限 */unsigned short __seq;       /* 队列号 */};

速记

函数功能用法参数返回值
ftok密钥生成key=ftok(路径,任意数字/字符)

const char *pathname

int proj_id

成功返回密钥,失败返回-1,更新errno
msgget消息队列创建msgid=msgget(密钥,选项| 权限)

选项

IPC_CREAT|0664

创建,存在忽略

IPC_CREAT| IPC_EXCL | 0664

创建,存在报错

成功返回队列id,失败返回-1,更新errno
msgsnd发送消息msgsnd(队列id,消息包,消息包内容大小,阻塞选项)

阻塞选项

满了时 0为阻塞

IPC_NOWAIT为非阻塞 直接报错 EAGAIN

成功为0,失败为-1,更新errno
msgrcv接收消息msgrcv(队列id,消息包,消息包内容大小,消息类型,阻塞选项)

消息类型

>0     该类型消息的第一个消息

=0    无所谓类型  队列第一个

<0    绝对值类型中最小的那一个

成功返回读取的字节数,失败为-1,更新errno
msgctl消息控制msgctl(队列id,控制选项,接收容器)

控制选项

IPC_STAT

获取队列数据

IPC_SET

修改队列数据

IPC_RMID

删除消息队列 ,第三个可以被忽略

成功返回0,失败返回-1,更新errno

http://www.dtcms.com/a/447450.html

相关文章:

  • Source Insight 4.00.0148版本发布,微更新
  • 网站 可信验证android项目开发
  • 电子商务网站建设子项目网上开店平台有哪些
  • 做壁画在哪个网站wordpress 转dedecms
  • 做国外零售的话是在什么网站开店艺术品网站模板
  • 重庆seo技术交流苏州搜索引擎排名优化商家
  • 做个人博客的网站网站建设与开发的软件
  • 防内涵吧网站源码如何搭建静态网站源码
  • 如何建购物网站免费私人网站建设平台
  • 新开传奇网站新开网公司做的网站入哪个会计科目
  • 网站建设公司服务wordpress更改网页标题
  • 大足集团网站建设59软文网
  • 行业网站建站wordpress英文评论
  • 织梦网站防黑怎么做文库百度登录入口
  • wordpress信息类模板seo百科
  • 在线培训网站次要关键词网站的风格包含的因素
  • php做的网站如何该样式做外贸怎么做
  • 【Axure】元件旋转后,如何设置文本保持水平?
  • 手机 网站开发软件杭州网站推广怎样做
  • 北京网站建设公司 网络服务深圳网站开发一薇
  • 康复实训室建设:全维度构建标准化康复实训教学空间,筑牢人才培养基石
  • 怎么做自己的网站赚钱模板自助建站
  • 健康实训室搭建健康技能实训的专业化核心阵地——健康实训室建设全景解读
  • 多进程编程和多线程编程的区别,应用场景
  • 曲靖企业网站建设网页设计作业10个页面
  • c++的角度上理解python
  • [创业之路-673]:创业过程个人认知与能力升级路径:与正确的人,做真确的事,用正确的方法,得到正确的结果
  • 网站制作 p雏鸟app网站推广
  • 大型游戏门户网站织梦模板芜湖网站建设
  • 网站建设淘宝jsp网站开发 心得