ВУЗ:
Составители:
20
11. Клиент формирует запрос, содержащий имя каталога. Сервер проверяет, име-
ется ли разрешение записи в этот каталог, при необходимости устанавливает
это право и информирует клиента о результатах выполнения операции. Клиент
выводит на экран полученное от сервера сообщение.
12. Клиент запрашивает у сервера количество работающих в данный момент
времени пользователей. Если
количество пользователей больше заданного
числа на терминал выводится сообщение.
Сообщения
Цель работы: научится организовывать обмен данными между процесса-
ми с использованием сообщений.
Методические указания
Для идентификации сообщений можно использовать ключи, которые гене-
рируются в системе при вызове функции
key_t ftok(char *filename, char proj);
В качестве имени файла можно задавать имя любого существующего фай-
ла, в частности, для определенности можно использовать имя самой программы.
Для обмена
используются очереди сообщений. Очередь создается функци-
ей
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
Если процессу необходимо создать новую очередь сообщений, то флаг
должен содержать макрос IPC_CREAT, а также права на чтение и запись сооб-
щений в очередь (0644). При нормальном завершении функция возвращает
идентификатор очереди, в случае ошибки возвращается значение -1.
Посылка и прием сообщений организуются при
вызове функций
int msgsnd(int msgid, struct msgbuf *msgp, int msgsz, int
msgflg);
и
int msgrcv(int msgid, struct msgbuf *msgp, int msgsz,
long msgtyp, int msgflg);
Первый параметр задает идентификатор очереди. Второй параметр являет-
ся указателем на сообщение. Сообщение представляет собой структуру
struct msgbuf {
long mtype; /* тип сообщения */
char mtext[]; /* указатель на буфер сообщения */
};
11. Клиент формирует запрос, содержащий имя каталога. Сервер проверяет, име- ется ли разрешение записи в этот каталог, при необходимости устанавливает это право и информирует клиента о результатах выполнения операции. Клиент выводит на экран полученное от сервера сообщение. 12. Клиент запрашивает у сервера количество работающих в данный момент времени пользователей. Если количество пользователей больше заданного числа на терминал выводится сообщение. Сообщения Цель работы: научится организовывать обмен данными между процесса- ми с использованием сообщений. Методические указания Для идентификации сообщений можно использовать ключи, которые гене- рируются в системе при вызове функции key_t ftok(char *filename, char proj); В качестве имени файла можно задавать имя любого существующего фай- ла, в частности, для определенности можно использовать имя самой программы. Для обмена используются очереди сообщений. Очередь создается функци- ей #include#include #include int msgget(key_t key, int msgflg); Если процессу необходимо создать новую очередь сообщений, то флаг должен содержать макрос IPC_CREAT, а также права на чтение и запись сооб- щений в очередь (0644). При нормальном завершении функция возвращает идентификатор очереди, в случае ошибки возвращается значение -1. Посылка и прием сообщений организуются при вызове функций int msgsnd(int msgid, struct msgbuf *msgp, int msgsz, int msgflg); и int msgrcv(int msgid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg); Первый параметр задает идентификатор очереди. Второй параметр являет- ся указателем на сообщение. Сообщение представляет собой структуру struct msgbuf { long mtype; /* тип сообщения */ char mtext[]; /* указатель на буфер сообщения */ }; 20
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »