Важное отличие pip'a от файла заключается в том, что прочитанная информация немедленно удаляется из него и не может быть прочитана повторно

Pipe можно представить себе в виде трубы ограниченной емкости, расположенной внутри адресного пространства операционной системы, доступ к входному и выходному отверстию, в которой осуществляется с помощью системных вызовов. В действительности pipe представляет собой область памяти, недоступную пользовательским процессам напрямую, зачастую организованную в виде кольцевого буфера (хотя существуют и другие виды организации). По буферу при операциях чтения и записи перемещаются два указателя, соответствующие входному и выходному потокам. При этом выходной указатель никогда не может перегнать входной и наоборот. Для создания нового экземпляра такого кольцевого буфера внутри операционной системы используется системный вызов pipe().

Прототип системного вызова:

#include <unistd.h>

int pipe(int *fd);

Описание системного вызова

Системный вызов pipe предназначен для создания pip'a внутри операционной системы.

Параметр fd является указателем на массив из двух целых переменных. При нормальном завершении вызова в первый элемент массива - fd[0] - будет занесен файловый дескриптор, соответствующий выходному потоку данных pip'a и позволяющий выполнять только операцию чтения, а во второй элемент массива – fd[1] - будет занесен файловый дескриптор, соответствующий входному потоку данных и позволяющий выполнять только операцию записи.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow