Книга: UNIX: взаимодействие процессов

Пример: программа mqgetattr

Пример: программа mqgetattr

Программа из листинга 5.3 открывает указанную очередь сообщений и выводит значения ее атрибутов.

Листинг 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 <name>");
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 = %ldn",
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. Это значение можно получить как 128?1024+1560 = 132632.

Добавочные 1560 байт представляют собой, скорее всего, дополнительную информацию: 8 байт на сообщение плюс добавочные 536 байт.

Оглавление книги


Генерация: 0.445. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз