// Очереди сообщений Posix в Linux // Программа из учебника "Системное программирование в среде Linux", Гунько А.В., стр. 112 // Название: mqcreate2.c // Описание: создание очереди сообщений с заданными атрибутами //pxmsg/mqcreate2.c #include #include #include #include #include #include #include #define FILE_MODE S_IRUSR | S_IWUSR struct mq_attr attr; /* mq_maxmsg и mq_msgsize ЙОЙГЙБМЙЪЙТХАФУС 0 */ int main(int argc, char **argv) { int c, flags; mqd_t mqd; 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) { printf("usage: mqcreate [ -e ] [ -m maxmsg -z msgsize ] \n"); exit(-1); } if ((attr.mq_maxmsg != 0 && attr.mq_msgsize ==0) || (attr.mq_maxmsg == 0 && attr.mq_msgsize != 0)) { printf("must specify both -m maxmsg and -z msgsize"); exit(-1); } mqd = mq_open(argv[optind], flags, FILE_MODE, (attr.mq_maxmsg != 0) ? &attr : NULL); printf("Result:%s\n",strerror(errno)); mq_close(mqd); exit(0); }