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

UptoLike

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

22
} ;
struct mybuf buf;
int fd;
char text[81];
int textLen;
printf("Ввести текст\n");
gets(text);
textLen=strlen(text);
if((key=ftok("smess.c",0))==-1 ){
perror("Ошибка создания ключа");
return 1;
}
if((fd=msgget(key, IPC_CREAT|0644))==-1) {
perror("Ошибка создания очереди");
return 1;
}
strncpy(buf.mtext, text, textLen);
buf.mtype=1L;
if((fd=msgsnd(fd, &buf, textLen,0))==-1) {
perror("Ошибка посылки сообщения");
return 1;
}
return 0;
}
Программаклиент размещается в файле cmess.c.
Эта программа использует для приема сообщения буфер buf, аналогичный
серверу. Аналогично серверу в ней по той же строке с именем исходного файла
сервера создается ключ для доступа к очереди. В
отличие от сервера использует-
ся существующая очередь, поэтому при вызове функции msgget() достаточно
определить лишь значение ключа.
Для приема сообщения в функции msgrcv() задаются первые два пара-
метра, значение флагов и режима можно установить равными нулю. Текст полу-
ченного сообщения выводится на консоль.
/* Клиент работы с сообщениями */
#include <stdio.h>
        } ;
        struct mybuf buf;
        int fd;
        char text[81];
        int textLen;
        printf("Ввести текст\n");
        gets(text);
        textLen=strlen(text);
        if((key=ftok("smess.c",0))==-1 ){
            perror("Ошибка создания ключа");
            return 1;
        }
        if((fd=msgget(key, IPC_CREAT|0644))==-1) {
            perror("Ошибка создания очереди");
            return 1;
        }
        strncpy(buf.mtext, text, textLen);
        buf.mtype=1L;
        if((fd=msgsnd(fd, &buf, textLen,0))==-1) {
            perror("Ошибка посылки сообщения");
            return 1;
        }
        return 0;
      }
     Программа – клиент размещается в файле cmess.c.
     Эта программа использует для приема сообщения буфер buf, аналогичный
серверу. Аналогично серверу в ней по той же строке с именем исходного файла
сервера создается ключ для доступа к очереди. В отличие от сервера использует-
ся существующая очередь, поэтому при вызове функции msgget() достаточно
определить лишь значение ключа.
     Для приема сообщения в функции msgrcv() задаются первые два пара-
метра, значение флагов и режима можно установить равными нулю. Текст полу-
ченного сообщения выводится на консоль.
      /* Клиент работы с сообщениями */
     #include 

                                     22