create.c

来自「这个是学习嵌入式开发的重要例子」· C语言 代码 · 共 69 行

C
69
字号
#include <stdio.h>#include <stdlib.h>#include <mqueue.h>#include <string.h>#include <errno.h>#define MQUEUE_NAME	"/mqueue.test.1"int main(int argc, char **argv){  if (argc < 4)  {    fprintf(stdout, "Usage: %s <name> <maxmsg> <msgsize>\n", argv[0]);    exit(1);  }  // Upon successful completion, the function shall return a message queue descriptor; otherwise,  the  func-  // tion shall return (mqd_t)-1 and set errno to indicate the error.  mqd_t mqd;#if 0  type = struct mq_attr  {    long int mq_flags;    long int mq_maxmsg;    long int mq_msgsize;    long int mq_curmsgs;    long int __pad[4];  }#endif  struct mq_attr attr;  memset(&attr, 0, sizeof(attr));  //attr.mq_flags =   attr.mq_maxmsg = atol(argv[2]);  attr.mq_msgsize = atol(argv[3]);  //attr.mq_curmsgs =   //mqd_t mq_open(const char *name, int oflag, ...);  //mqd_t mq_open(char *name, int flags, int mode, struct mq_attr *attr);  if ((mqd = mq_open(argv[1], O_CREAT | O_EXCL, 0644, &attr)) == (mqd_t) - 1)  {    fprintf(stderr, "mq_open() failed: %s\n", strerror(errno));    if (errno != EEXIST)    {      exit(1);    }  }  fprintf(stdout, "mq_open() successed.\n");  mq_close(mqd);#if 0  //int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat);  mq_getattr(mqd, &attr);  fprintf(stdout, "attr.mq_flags = %ld\n", attr.mq_flags);  fprintf(stdout, "attr.mq_maxmsg = %ld\n", attr.mq_maxmsg);  fprintf(stdout, "attr.mq_msgsize = %ld\n", attr.mq_msgsize);  fprintf(stdout, "attr.mq_curmsgs = %ld\n", attr.mq_curmsgs);  mq_unlink(MQUEUE_NAME);#endif  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?