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

Программа msgsnd

Программа msgsnd

Программа msgsnd приведена в листинге 6.3. Она помещает в очередь одно сообщение заданной длины и типа.

Мы создаем указатель на структуру msgbuf общего вида, а затем выделяем место под реальную структуру (буфер записи) соответствующего размера, вызвав calloc. Эта функция инициализирует буфер нулем.

Листинг 6.3. Помещение сообщения в очередь System V

//svmsg/msgsnd.c
1  #include "unpipc.h"
2  int
3  main(int argc, char **argv)
4  {
5   int mqid;
6   size_t len;
7   long type;
8   struct msgbuf *ptr;
9   if (argc != 4)
10   err_quit("usage: msgsnd <pathname> <#bytes> <type>");
11  len = atoi(argv[2]);
12  type = atoi(argv[3]);
13  mqid = Msgget(Ftok(argv[1], 0), MSG_W);
14  ptr = Calloc(sizeof(long) + len, sizeof(char));
15  ptr->mtype = type;
16  Msgsnd(mqid, ptr, len, 0);
17  exit(0);
18 }

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


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