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

UptoLike

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

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<<"Получено->"<