进程间通讯--消息队列
上一篇 /
下一篇 2009-05-19 19:42:56
/ 个人分类:C/C++
~.^i"qZXtS051Testing软件测试网/``)ua%Y
1. 创建消息队列
0]!sb S{/\3l0 #include<sys/types.h>51Testing软件测试网]wH
R6D3| _*Ic.ho\&y #include<sys/ipc.h> }Q?Hz0 #include<sys/msg.h>51Testing软件测试网!}O3hl-^?$p intmsgget(key_t key,intmsgflg); #_e4SZS'`c0 |
成功返回队列ID,失败返回-1。
'pp:c Ud:~(p+I0参数51Testing软件测试网8b7cfh4v
\ | 说明 Y%S$C&i!~0 |
key 7cF+N}:D [7i0 | 创建/打开队列key值,由ftok产生,可以直接给常量 /L5n"BH;Q+Qi0 |
msgflg X'[?&b
X$g0 | 创建/打开方式IPC_CREAT、IPC_EXCL、IPC_NOWAIT 3E!w#k+yN
t iA0 |
通常是msgflg =IPC_CREAT| IPC_EXCL|0666,意思是若不存在key值的队列则创建,否则如果存在则打开队列,0666意思与一般文件权限一样,XXX-本用户,同组用户,其他用户的读写执行的权限。
Q.oeI0{2MScw0 #include<sys/types.h>51Testing软件测试网w-mg1mYu'j #include<sys/ipc.h>51Testing软件测试网mU2smNjo key_t ftok(constchar*pathname,intproj_id); 51Testing软件测试网8f4g~1YL su
|
//获取pathname相对应的一个键值, pathname必须是存在并且可读取的文件,proj_id表示序号,用来区别同时的存在文件。成功返回key值,失败返回-1。
]QN|Z&?&v|0
3z_F[&jq]02. 队列读写51Testing软件测试网1oGm&Y^m2Hc%]Cd
#include<sys/types.h>51Testing软件测试网&J&xc*H j F6| #include<sys/ipc.h> 5T KE
UTr0 #include<sys/msg.h> 51Testing软件测试网2oe0_I hZ4eI[3V
|
a) 读取数据――阻塞读取消息队列,直到解除阻塞。
-|g:]t,|
h'cN@0ssize_t msgrcv(intmsqid,structmsgbuf*msgp,size_tmsgsz,longmsgtyp,intmsgflg); 51Testing软件测试网p;K0|Y5njx5nmJh
|
参数 5M6M%l/V:C"kE2V Cdn0 | 说明51Testing软件测试网:PYGM;J*Q |
msqid51Testing软件测试网pK}t|ee/Y | 已打开的消息队列id |