找回密码
 注册
关于网站域名变更的通知
查看: 258|回复: 1
打印 上一主题 下一主题

什么是Linux消息队列?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-10-9 15:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
一、概念
5 I- M3 P  i( U
8 \4 j: r# F4 ?5 Y
  消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向中按照一定的规则添加新消息;有读权限的进程则可以读走消息。读走就没有了。消息队列是随内核持续的。 只有内核重启或人工删除时,该消息才会被删除。在系统范围内,消息队列与键值唯一对应。
( a4 `  w# X. m" p% E& v' q' P* Z- Z: ^( G5 m! ?0 E
二、步骤及思路2 }8 Z# L, r0 T* ~% R  \3 z

; E9 p  V$ ?4 i/ Q1、取得键值
3 I- Z+ h# B$ m1 i- z
5 C3 M, H& `4 h: r; c2、打开、创建消息队列& h8 t( b( F) B- @# k& ?

7 f6 a# L- k1 V5 _* ?! x3、发送消息3 {# J6 i& m0 f; y0 C
8 b9 D& W3 K9 X6 s8 n, z9 }/ e3 j
4、接收消息
5 e0 O* A$ o4 x8 C% A/ y2 q, U$ ~/ b% i1 O
下面具体看看:
8 K$ @0 I. h7 K0 r# g- X% N  R+ I* h4 g) B( H( j% ?
1、取得键值
) y7 I% z2 `4 \2 R+ l) K
: a$ G9 T9 ]; P5 z5 Z  D      key_t ftok(char *pathname, char proj)& P: b; U" v% j
# U! s. G- L5 Q; M. J' n
( E! h4 b: L- N: a& m" o
# R. N* q4 I; V) p; H' T% t
   头文件为<sys/ipc.h>。返回文件名对应的键值,失败返回 -1。proj是项目名,随便写,不为0就行。
/ r8 f0 |3 b3 O  `7 ~8 l8 |  [1 ?9 f6 m  w& O& t
   fname就是你指定的文件名(已经存在的文件名)。需要有-t 的权限,或用root权限执行,通常设为/tmp或设为" . "。这里我感觉不用这个函数也行,因为key值可以自己指定,例如: #define KEY_MSG 0x101
  u& Z9 g0 |$ g: z
7 _6 R+ x( c: U+ }3 c2、打开、创建消息队列" r4 b9 V4 G- s. }" [

- ]8 U/ N' Q9 j% D     int msgget(key_t key, int msgflg)
4 m6 ?) ^% G: l- J" K' g8 _4 k% F( v) k, g9 y9 y5 Z
9 J; `& N# z% J! d/ d3 `. E, d
  头文件为<sys/msg.h>。key由ftok获得。
  P# n8 J( d- H2 q# ]: [1 ~. P$ _! ]; [" L$ k9 {  n
  msgflg有:5 m# ~, e; C* ~9 b* L/ F

, N/ c9 K4 U9 F  n" z2 LIPC_CREAT 创建新的消息队列,应配有文件权限0666。
! `0 B4 f; s  Q) v  d! f0 ?3 l+ ]& q4 V' Q) y
IPC_EXCL  与IPC_CREAT一同使用,表示如果要创建的消息队列已经存在,则返回错误。
2 E+ p, J, y5 H/ `$ I9 j7 L* c2 O' `+ v3 y6 J7 o* Q7 l1 o
IPC_NOWAIT 读写消息不阻塞。/ F' S. |0 }7 `* z5 F/ e

$ y6 B+ e) {  D1 c6 Q
" O. r' @/ a- Q# ~; A  当没有与key相对应的消息队列并且msgflg中包含了IPC_CREAT标志 或 key的参数为IPC_PRIVATE 时,创建一个新的消息队列。5 {! X# }$ i% i3 B! p- a$ n1 ]6 M

# e' v0 ~4 ~: e% |( U8 Y3、发送消息' H# \# F3 U' G# b
游客,如果您要查看本帖隐藏内容请回复

% U9 j$ E0 l) C
. L% l6 v# {& K; d" R7 {  t7 Y5 p! D5 h
+ v: A# T: u7 H# W+ X+ ]$ z, p

该用户从未签到

2#
发表于 2019-10-9 18:46 | 只看该作者
看看什么是Linux消息队列。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 01:42 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表