// Очереди сообщений Posix в Linux // Программа из учебника "Системное программирование в среде Linux", Гунько А.В., стр. 115 // Название: mqreceive.c // Описание: чтение сообщения из очереди //pxmsg/mqreceive.c #include #include #include #include #include #include #include int main(int argc, char **argv) { int c, flags; mqd_t mqd; ssize_t n; uint 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) { printf("usage: mqreceive [ -n ] \n"); exit(-1); } mqd = mq_open(argv[optind], flags); printf("Result:%s\n",strerror(errno)); 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(n); }