Пример: программа mqunlink
В листинге 5.2 приведена программа mqunlink, удаляющая из системы очередь сообщений.
Листинг 5.3. Получение и вывод значений атрибутов очереди сообщений
//pxmsg/mqgetattr.c
1 #include "unpipc.h"
2 int
3 main(int argc, char **argv)
4 {
5 mqd_t mqd;
6 struct mq_attr attr;
7 if (argc != 2)
8 err_quit("usage: mqgetattr
9 mqd = Mq_open(argv[1], O_RDONLY);
10 Mq_getattr(mqd, &attr);
11 printf ("max #msgs = %ld, max #bytes/msg = %ld, "
12 "#currently on queue = %ld\n",
13 attr.mq_maxmsg, attr.mq_msgsize, attr.mq_curmsgs);
14 Mq_close(mqd);
15 exit(0);
16 }
Мы можем создать очередь сообщений и вывести значения ее атрибутов, устанавливаемые по умолчанию:
solaris % mqcreate1 /hello.world
solaris % mqgetattr /hello.world
max #msgs = 128, max #bytes/msg = 1024, #currently on queue = 0
Вспомним размер одного из файлов очереди, созданной с использованием устанавливаемых по умолчанию значений атрибутов. Он был выведен командой ls в примере после листинга 5.1. Это значение можно получить как 128x1024+1560 = 132632.
Добавочные 1560 байт представляют собой, скорее всего, дополнительную информацию: 8 байт на сообщение плюс добавочные 536 байт.