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 | #include <stdio.h> #include <stdlib.h> #include <mqueue.h> int main( int argc, char **argv) { mqd_t mqd; void *ptr; size_t len, prio; if (argc!=4) { fprintf (stderr, "usage: ./a.out <name> <#bytes> <priority>\n" ); exit (-1); } len= atoi (argv[2]); prio= atoi (argv[3]); mqd=mq_open(argv[1], O_WRONLY); ptr= calloc (len, sizeof ( char )); mq_send(mqd, ptr, len, prio); exit (0); } |
往队列中增加消息运行示例:
1 2 3 | $ ./mqsend /test 100 30 $ ./mqgetattr /test max #msgs=10, max #bytes/msg=8192, #currently on queue=1 |
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 | #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <mqueue.h> int main( int argc, char **argv) { int c, flags; mqd_t mqd; ssize_t n; unsigned int prio; void *buff; struct mq_attr attr; flags=O_RDONLY; while ((c=getopt(argc, argv, "n" ))!=-1) { switch (c) { case 'n' : flags|=O_NONBLOCK; break ; } } if (optind!=argc-1) { fprintf (stderr, "usage: ./a.out [-n] <name>\n" ); exit (-1); } mqd=mq_open(argv[optind], flags); mq_getattr(mqd, &attr); buff= malloc (attr.mq_msgsize); n=mq_receive(mqd, buff, attr.mq_msgsize, &prio); printf ( "read %ld bytes, priority=%u\n" , ( long )n, prio); exit (0); } |
从队列中读入消息:
1 2 3 4 | $ ./mqreceive -n /test read 100 bytes, priority=30 $ ./mqgetattr /test max #msgs=10, max #bytes/msg=8192, #currently on queue=0 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现