Профтемы студенту и преподавателю
Taketop.ru
СТУДЕНТУ И ПРЕПОДАВАТЕЛЮ
лекции по дисциплинам
Информатика и вычислительная техника :: Операционные системы и среды
Прогон программы для pipe в одном процессе
Достаточно яркой иллюстрацией действий по созданию pip'a, записи в него данных, чтению из него и освобождению выделенных ресурсов может служить программа, организующая работу с pip’ом в рамках одного процесса, приведенная ниже:
/* Программа 05-2.с, иллюстрирующая работу с pip'ом в рамках одного
процесса */
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(){
    int fd[2];
    size_t size;
    char string[] = "Hello, world!";
    char resstring[14];
    /* Попытаемся создать pipe */
    if(pipe(fd) < 0){
        /* Если создать pipe не удалось, печатаем об этом сообщение
        и прекращаем работу */
        printf("Can\'t create pipe\n");
        exit(-1);
    }
    /* Пробуем записать в pipe 14 байт из нашего массива, т.е. всю
    строку "Hello, world!" вместе с признаком конца строки */
    size = write(fd[1], string, 14);
    if(size != 14){
        /* Если записалось меньшее количество байт, сообщаем об
        ошибке */
        printf("Can\'t write all string\n");
        exit(-1);
    }
    /* Пробуем прочитать из pip'а 14 байт в другой массив, т.е. всю
    записанную строку */
    size = read(fd[0], resstring, 14);
    if(size < 0){
        /* Если прочитать не смогли, сообщаем об ошибке */
        printf("Can\'t read string\n");
        exit(-1);
    }
    /* Печатаем прочитанную строку */
    printf("%s\n",resstring);
    /* Закрываем входной поток*/
    if(close(fd[0]) < 0){
        printf("Can\'t close input stream\n");
    }
    /* Закрываем выходной поток*/
    if(close(fd[1]) < 0){
        printf("Can\'t close output stream\n");
    }
    return 0;
}
Программа 05-2.с, иллюстрирующая работу с pip'ом в рамках одного процесса


Работы, представленные на сайте http://taketop.ru, предназначено исключительно для ознакомления. Все права в отношении работ и/или содержимого работ, представленных на сайте http://taketop.ru, принадлежат их законным правообладателям. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие или полученные в связи с использованием работ и/или содержимого работ, представленных на сайте http://taketop.ru
Рейтинг@Mail.ru
Сайт управляется SiNG cms © 2010-2015