ВУЗ:
Составители:
17
Первая программа служит сервером, она создает именованный канал по
функции mkfifo(NAME, S_IFIFO|S_IRWXU|S_IRWXG|S_IRWXO). В каче-
стве первого параметра используется строка, определенная константой NAME.
Второй параметр представляет собой комбинацию ключей, определяющих раз-
решение полных прав доступа для всех категорий пользователей. После создания
канала на стороне сервера он открывается в режиме чтения. После прихода
со-
общения, текст этого сообщения выводится на экран и канал закрывается. В кон-
це программы функцией unlink(NAME) канал уничтожается. Открытие и
уничтожение канала выполняются с использованием одного и того же имени
(константа NAME со значением "sfifo.cc").
/* Сервер. Создает FIFO и ожидает сообщение */
#include <iostream.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#define NAME "sfifo.cc"
int main()
{
int fd;
char buf[80];
unlink(NAME);
if(mkfifo(NAME, S_IFIFO|S_IRWXU|S_IRWXG|S_IRWXO)) {
perror("Ошибка FIFO");
return 1;
}
if((fd=open(NAME, O_RDONLY))==-1) {
perror("Ошибка открытия файла сервера");
}
read(fd, buf, sizeof(buf));
cout<<"Получено->"<<buf<<endl;
close(fd);
Первая программа служит сервером, она создает именованный канал по функции mkfifo(NAME, S_IFIFO|S_IRWXU|S_IRWXG|S_IRWXO). В каче- стве первого параметра используется строка, определенная константой NAME. Второй параметр представляет собой комбинацию ключей, определяющих раз- решение полных прав доступа для всех категорий пользователей. После создания канала на стороне сервера он открывается в режиме чтения. После прихода со- общения, текст этого сообщения выводится на экран и канал закрывается. В кон- це программы функцией unlink(NAME) канал уничтожается. Открытие и уничтожение канала выполняются с использованием одного и того же имени (константа NAME со значением "sfifo.cc"). /* Сервер. Создает FIFO и ожидает сообщение */ #include#include #include #include #include #include #define NAME "sfifo.cc" int main() { int fd; char buf[80]; unlink(NAME); if(mkfifo(NAME, S_IFIFO|S_IRWXU|S_IRWXG|S_IRWXO)) { perror("Ошибка FIFO"); return 1; } if((fd=open(NAME, O_RDONLY))==-1) { perror("Ошибка открытия файла сервера"); } read(fd, buf, sizeof(buf)); cout<<"Получено->"<
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »