ВУЗ:
Составители:
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() задаются первые два пара- метра, значение флагов и режима можно установить равными нулю. Текст полу- ченного сообщения выводится на консоль. /* Клиент работы с сообщениями */ #include22