创建自定义属性的POSIX消息队列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <stdio.h> #include <fcntl.h> #include <errno.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <mqueue.h> struct mq_attr attr; const int maxline=4096; int main( int argc, char **argv) { int c, flags; mqd_t mqd; char errbuff[maxline]; flags=O_RDWR | O_CREAT; while ((c=getopt(argc, argv, "em:z:" ))!=-1) { switch (c) { case 'e' : flags|=O_EXCL; break ; case 'm' : attr.mq_maxmsg= atol (optarg); break ; case 'z' : attr.mq_msgsize= atol (optarg); break ; } } if (optind != argc-1) { fprintf (stderr, "mqcreate [-e] [ -m maxmsg -z msgsize ] <name>\n" ); exit (-1); } if ((attr.mq_maxmsg!=0&&attr.mq_msgsize==0) || (attr.mq_maxmsg==0&&attr.mq_msgsize!=0)) { fprintf (stderr, "must specify both -m maxmsg -z msgsize\n" ); exit (-1); } if ((mqd=mq_open(argv[optind], flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, (attr.mq_maxmsg!=0) ? &attr:NULL))<0) { strerror_r( errno , errbuff, maxline); fprintf (stderr, "mq_open error: %s\n" , errbuff); exit (-1); } mq_close(mqd); exit (0); } |
指定创建队列的最大消息数和每个消息的最大大小
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现