Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "stdlib.h"
- #include <fcntl.h>
- #include <unistd.h>
- int main(int argc, char **argv) {
- int fd1[2], fd2[2], result;
- char Hello[] = "Приветик";
- char resstring1[50], resstring2[50];
- if (pipe(fd1) < 0) {
- printf("Pipe 1 не создался!");
- }
- if (pipe(fd2) < 0) {
- printf("Pipe 2 не создался!");
- }
- result = fork();
- if (result == -1) {
- printf("Процесс-ребенок не был создан!");
- }
- else if (result > 0) {
- close(fd1[0]); //закрываем выходной поток pipe1
- close(fd2[1]); //закрываем входной поток pipe2
- write(fd1[1], Hello, 50); //записываем в входной поток pipe1 приветствие
- printf("Написал родитель pipe1: ");
- puts(Hello); //выводим на экран
- close(fd1[1]); //закрываем входной поток pipe1
- puts("Процесс-родитель вышел!\n");
- } else {
- close(fd1[1]);//закрываем входной поток pipe1
- close(fd2[0]); //закрываем выходной поток pipe2
- printf("Ребенок читает строку pipe1-родителя: ");
- read(fd1[0], resstring1, 50); //записываем приветствие в выходной поток pipe1
- puts(resstring1); //выводим на экран
- close(fd1[0]); //закрываем выходной поток pipe1
- printf("Ребенок записывает строку в pipe2: ");
- puts(resstring1); //выводим на экран
- write(fd2[1], Hello, 50); //записываем в входной поток pipe2 приветствие
- close(fd2[1]); //закрываем входной поток pipe2
- printf("Процесс-ребенок вышел!\n");
- }
- sleep(0); //приостанавливаем работу потока
- if (result > 0) {
- close(fd2[1]); //закрываем входной поток pipe2
- printf("Родитель читает строку:\n ");
- read(fd2[0], resstring2, 50); //записываем приветствие в выходной поток pipe2
- puts(resstring2); //выводим на экран
- close(fd2[0]); //закрываем выходной поток pipe2
- printf("Родитель выходит\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement