linux网络编程-进程间通信——消息队列
2022/2/20 7:26:23
本文主要是介绍linux网络编程-进程间通信——消息队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 #include<stdio.h> 2 #include<string.h> 3 #include<sys/types.h> 4 #include<sys/ipc.h> 5 #include<sys/msg.h> 6 int main() 7 { 8 int ret = -1; 9 key_t key; 10 char *msgpath = "./ipc/"; 11 int msgFlags, msg_id; 12 13 int msg_sflags, msg_rflags; 14 struct msgmbuf{ 15 long int mtype; 16 char mtext[10]; 17 }; 18 19 struct msqid_ds msg_info; 20 struct msgmbuf msg_mbuf; 21 22 key = ftok(msgpath,'b'); 23 if(key!=-1) 24 { 25 printf("ftok 成功!key = %d\n", key); 26 } 27 else 28 { 29 printf("ftok 失败!key = %d\n", key); 30 } 31 32 msgFlags = IPC_CREAT|IPC_EXCL; 33 msg_id = msgget(key,msgFlags|0666); 34 if(-1 != msg_id) 35 { 36 printf("消息建立成功,msgId = %d\n", msg_id); 37 } 38 else 39 { 40 printf("msgget 失败, msgId = %d\n", msg_id); 41 return 0; 42 } 43 44 45 msg_sflags = IPC_NOWAIT; 46 msg_mbuf.mtype = 10; 47 memcpy(msg_mbuf.mtext,"1", sizeof("1")); 48 printf("msgLen = %d\n", sizeof("1")); 49 ret = msgsnd(msg_id, &msg_mbuf, sizeof(msg_mbuf.mtext), msg_sflags); 50 if(-1 == ret) 51 { 52 printf("消息发送失败\n"); 53 } 54 55 msg_rflags = IPC_NOWAIT|MSG_NOERROR; 56 57 ret = msgrcv(msg_id, &msg_mbuf,10,10,msg_rflags); 58 if(-1 == ret) 59 { 60 printf("消息接收失败\n"); 61 } 62 else 63 { 64 printf("消息接收成功\n"); 65 } 66 67 68 printf("--1--\n"); 69 70 ret = msgctl(msg_id, IPC_RMID, NULL); 71 if(-1 == ret) 72 { 73 printf("删除消息失败\n"); 74 return 0; 75 } 76 else 77 { 78 printf("删除消息成功\n"); 79 } 80 81 return 0; 82 }
这篇关于linux网络编程-进程间通信——消息队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法