Работа с интерфейсом прикладного программирования операционной системы Linux. Шашков Б.Д. - 20 стр.

UptoLike

Составители: 

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