Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#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