Книга: UNIX: взаимодействие процессов
Программа msgrcv
Программа msgrcv
В листинге 6.4 приведен текст программы msgrcv, считывающей сообщение из очереди. В командной строке может быть указан параметр –n, отключающий блокировку, а параметр –t может быть использован для указания типа сообщения в функции msgrcv.
2 Не существует простого способа определить максимальный размер сообщения (об этом и других ограничениях мы поговорим в разделе 6.10), поэтому мы определим свою собственную константу.
Листинг 6.4. Считывание сообщения из очереди System V
//svmsg/msgrcv.c
1 #include "unpipc.h"
2 #define MAXMSG (8192 + sizeof(long))
3 int
4 main(int argc, char **argv)
5 {
6 int c, flag, mqid;
7 long type;
8 ssize_t n;
9 struct msgbuf *buff;
10 type = flag = 0;
11 while ((c = Getopt(argc, argv, "nt:")) != –1) {
12 switch (c) {
13 case 'n':
14 flag |= IPC_NOWAIT;
15 break;
16 case 't':
17 type = atol(optarg);
18 break;
19 }
20 }
21 if (optind != argc – 1)
22 err_quit("usage: msgrcv [ –n ] [ –t type ] <pathname>");
23 mqid = Msgget(Ftok(argv[optind], 0), MSG_R);
24 buff = Malloc(MAXMSG);
25 n = Msgrcv(mqid, buff, MAXMSG, type, flag);
26 printf("read %d bytes, type = %ldn", n, buff->mtype);
27 exit(0);
28 }
- Программа shmget
- msgrcv
- Программа msgcreate
- Программа msgsnd
- Программа msgrmid
- Программа msgrcvid
- Программа «Тайный покупатель»
- Программа Victoria
- Подпрограмма обработки прерывания
- Магическая программа, или Беспорядок по расписанию
- Что делать, если вместо русских букв в программах – непонятные символы?
- Как называется программа, которая устанавливает Windows за 5 минут?