第三阶段知识回顾(4)

进程间通信

(1)消息队列

int msgget(key_t key ,int msgfls)创建消息队列

参数1:key_t key;//暗号键值
参数2:创建消息队列权限(IPC_CREAT|| )

2,int msgsnd(int msgid,const void *msg_ptr,size_t msg_sz,int msgflg)
往消息队列发送消息
参数1:哪一个消息队列 msgid是由msgget函数返回的消息队列标识符。

参数2:msg_ptr是一个指向准备发送消息的指针,但是消息的数据结构却有一定的要求,指针msg_ptr所指向的消息结构一定要是以一个长整型成员变量开始的结构体,接收函数将用这个成员来确定消息的类型。:
参数3:msg_sz是msg_ptr指向的消息的长度,注意是消息的长度,而不是整个结构体的长度,也就是说msg_sz是不包括长整型消息类型成员变量的长度。
参数4:msgflg用于控制当前消息队列满或队列消息到达系统范围的限制时将要发生的事情

3.int msgrcv(int msgid,void *msg_ptr, size_t msg_sz,long int msgtype, int msgflg);
接受消息队列里面信息
参数1:哪一个消息队列 msgid是由msgget函数返回的消息队列标识符。

参数2:msg_ptr是一个指向准备发送消息的指针,但是消息的数据结构却有一定的要求,指针msg_ptr所指向的消息结构一定要是以一个长整型成员变量开始的结构体,接收函数将用这个成员来确定消息的类型。:
参数3:msg_sz是msg_ptr指向的消息的长度,注意是消息的长度,而不是整个结构体的长度,也就是说msg_sz是不包括长整型消息类型成员变量的长度。

参数4:msgtype可以实现一种简单的接收优先级。如果msgtype为0,就获取队列中的第一个消息。如果它的值大于零,将获取具有相同消息类型的第一个信息。如果它小于零,就获取类型等于或小于msgtype的绝对值的第一个消息。

参数5:msgflg用于控制当前消息队列满或队列消息到达系统范围的限制时将要发生的事情

调用成功时,该函数返回放到接收缓存区中的字节数,消息被复制到由msg_ptr指向的用户分配的缓存区中,然后删除消息队列中的对应消息。失败时返回-1.

4,int msgctl(int mspid ,int command,strcut msqid_ds*buf) 控制函数
删除消息队列

函数的第一个参数msgqid 是消息队列对象的标识符。
第二个参数是函数要对消息队列进行的操作,它可以是:
IPC_STAT
取出系统保存的消息队列的msqid_ds 数据,并将其存入参数buf 指向的msqid_ds 结构
中。
IPC_SET
设定消息队列的msqid_ds 数据中的msg_perm 成员。设定的值由buf 指向的msqid_ds
结构给出。
IPC_RMID
将队列从系统内核中删除。
第三个参数:buf是指向msgid_ds结构的指针,它指向消息队列模式和访问权限的结构。

(2)共享内存

1.int shmget(key_t key, size_t size, int shmflg)创建共享内存
如果成功返回共享内存的id号
参数一key 会建立新共享内存对象 ,对方要有相同的key值才能够读取数据
参数 shmflg 是操作标志位,它的一些宏定义如下:

IPC_CREATE : 调用 shmget 时,系统将此值与其他共享内存区的 key 进行比较,如果存在相同的 key ,说明共享内存区已存在,此时返回该共享内存区的标识符,否则新建一个共享内存区并返回其标识符。

IPC_EXCL : 该宏必须和 IPC_CREATE 一起使用,否则没意义。当 shmflg 取 IPC_CREATE | IPC_EXCL 时,如果没有该块共享内存则创建,如果发现内存区已经存在则返回 -1,错误代码为 EEXIST 。
2. shmat 将共享内存与进程相连接,将这个内存映射到本进程的虚拟内存空间
void *shmat(int shmid, const void *shmaddr, int shmflg)
shmid 共享内存标识符 shmget成功创建或者打开后返回的值,就是shmid
shmaddr:指定共享内存出现在进程内存地址的什么位置,直接指定为NULL让内核自己决定一个合适的地址位置
shmflg:SHM_RDONLY:为只读模式,其他为读写模式
返回值:
出错:-1,错误原因存于error中
成功:附加好的共享内存地址

3.shmdt 删除本进程的这块内存,解除映射
与shmat函数相反,是用来断开与共享内存附加点的地址,禁止本进程访问此片共享内存
int shmdt(const void *shmaddr)
shmaddr:连接的共享内存的起始地址
返回值:
出错:-1,错误原因存于error中
成功:0

4.shmctl(共享内存管理)完成对共享内存的控制
int shmctl(int shmid, int cmd, struct shmid_ds *buf)
参数1 :shmid 共享内存标识符 shmget成功创建或者打开后返回的值,就是shmid

参数2:cmd:
IPC_STAT:得到共享内存的状态,把共享内存的shmid_ds结构复制到buf中
IPC_SET:改变共享内存的状态,把buf所指的shmid_ds结构中的uid、gid、mode复制到共享内存的shmid_ds结构内
IPC_RMID:删除这片共享内存

参数3:buf:共享内存管理结构体。具体说明参见共享内存内核结构定义部分

返回值:
成功:0
出错:-1,错误原因存于error中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过先进的信息技术,为师生提供一个全面智能的感知环境和综合信息服务平台。该方案正处在从信息化第二阶段第三阶段过渡的关键时期,致力于实现校园服务和管理的全面智能化。 方案的核心目标是构建一个集成的校园地理信息服务平台,通过该平台实现资产管理、房产信息管理、基础设施管理、绿化管理和能源监测管理等功能。同时,该平台将提供校园漫游、信息服务、指引服务、活动通知、用房服务和客流统计等多样化服务,以促进校园的和谐、绿色、平安和便捷。 在技术层面,智慧校园建设方案强调系统集成能力、数据统一分析能力、系统资源共享能力以及大数据集成处理能力。通过这些能力,可以构建统一的校园地理信息平台,提供综合的应用支撑和管理能力,实现系统平滑演进。 应用方向上,智慧校园建设方案围绕和谐校园、绿色校园、平安校园和掌上校园四个维度展开。和谐校园侧重于提供校园漫游、信息服务、指引服务等,增强师生的校园体验。绿色校园则关注资产管理和能源监测,推动校园的可持续发展。平安校园通过视频监控、数字巡更等手段,确保校园安全。掌上校园则利用移动设备,实现校园服务的随时随地访问。 最终,智慧校园建设方案将通过维虚拟校史馆、720度成像技术等创新应用,提供身临其境的校园漫游体验,同时通过可视化管理和数据分析,优化校园资源配置和运营效率,实现校园管理的智能化和现代化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值