Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

dopmat / block4 / sockpair

.c
Скачиваний:
5
Добавлен:
15.03.2015
Размер:
1.63 Кб
Скачать
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

#define STR1 "How are you?"
#define STR2 "I'm ok, thank you."
#define BUF_SIZE 1024 //инициализация размера буфера

int main(int argc, char ** argv)
{
  int sockets[2]; //инициализация массива сокетов
  char buf[BUF_SIZE];
  int pid;

  if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) < 0)  //создание парных сокетов
  {
      perror("socketpair() failed");
      return EXIT_FAILURE;
  }
  pid = fork(); //создание дочернего процесса
  //printf("Дескриптор процесса: %d\n", pid);
  if (pid != 0) //выполнение в родительском процессе
  {
    close(sockets[1]); //закрытие ненужного дескриптора
    write(sockets[0], STR1, sizeof(STR1)); //запись STR1 в сокет
    read(sockets[0], buf, sizeof(buf)); //чтение из сокета, содержащего STR2, в буфер
    printf("%s\n", buf); //вывод буфера
    close(sockets[0]);
  }
  else //выполнение в дочернем процессе
  {
    close(sockets[0]); //закрытие ненужного дескриптора
    read(sockets[1], buf, sizeof(buf)); //чтение из сокета, содержащего STR1, в буфер
    printf("%s\n ", buf); //вывод содержимого буфера
    write(sockets[1], STR2, sizeof(STR2)); //запись STR2 в сокет
    close(sockets[1]); //закрытие сокета
  }
}
Соседние файлы в папке block4