C语言消息队列
msgsnd.c文件
1 #include<sys/types.h> 2 #include<sys/ipc.h> 3 #include<sys/msg.h> 4 #include<stdio.h> 5 6 struct msgbuf 7 { 8 long type;//类型 9 char buf[1024]; 10 }; 11 12 int main() 13 { 14 int msgid; 15 msgid=msgget(0x1000,IPC_CREAT | 0777); 16 struct msgbuf mb={1,"hello world"}; 17 int ret; 18 ret=msgsnd(msgid,&mb,sizeof(struct msgbuf)-sizeof(long),0); 19 //这里的长度不包括类型的大小 20 }
msgrcv.c文件
1 #include<sys/types.h> 2 #include<sys/ipc.h> 3 #include<sys/msg.h> 4 #include<stdio.h> 5 struct msgbuf 6 { 7 long type; 8 char buf[1024]; 9 }; 10 int main() 11 { 12 int msgid; 13 msgid=msgget(0x1000,IPC_CREAT | 0777); 14 struct msgbuf mb; 15 msgrcv(msgid,&mb,sizeof(struct msgbuf)-sizeof(long),1,0); 16 puts(mb.buf); 17 }
gcc msgsnd.c -o msgsnd gcc msgrcv.c -o msgrcv
ipcs查看消息队列
./msgsnd 然后 ipcs
已经传入,然后./msgrcv
ipcs查看一下
取出数据