Загрузка данных


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(void)
{
    int fd[2];
    pid_t childpid;
    char string[] = "Hello, world!\n";
    char readbuffer[80];

    // Очищаем буфер перед использованием
    memset(readbuffer, 0, sizeof(readbuffer));

    if (pipe(fd) == -1) {
        perror("pipe");
        exit(1);
    }

    if ((childpid = fork()) == -1) {
        perror("fork");
        exit(1);
    }

    if (childpid == 0) {
        /* ПОТОМОК: теперь ЧИТАЕТ из канала */
        close(fd[1]); // Закрываем ненужный конец на запись
        
        read(fd[0], readbuffer, sizeof(readbuffer) - 1);
        printf("Потомок получил строку: %s", readbuffer);
        
        close(fd[0]); // Закрываем конец на чтение
        exit(0);
    } else {
        /* РОДИТЕЛЬ: теперь ПИШЕТ в канал */
        close(fd[0]); // Закрываем ненужный конец на чтение
        
        write(fd[1], string, strlen(string));
        close(fd[1]); // Сигнал EOF для потомка
        
        wait(NULL); // Ждем, пока потомок закончит работу
    }
    return 0;
}