[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Программные каналы
                         Системный вызов pipe

Программные каналы создаются системным вызовом pipe(2).
Возвращаемое значение показывает, успешно завершился вызов или нет.

Системный  вызов   pipe(2)  заполняет   массив   целых   чисел   двумя
дескрипторами файлов.  В ранних версиях системы первый элемент массива
содержал дескриптор,  связанный с  концом канала,  предназначенным для
чтения; второй - для записи. В SVR4 оба дескриптора открыты для чтения
и записи, позволяя двусторонний обмен данными.

Как правило,  программные каналы используются следующим образом: после
системного  вызова  pipe(2),  создавшего  программный  канал,  вызовом
fork(2)  создается   подпроцесс.  Затем   родительский  и  порожденный
процессы  закрывают  тот  из  концов  канала,  который  не  собираются
использовать.   Родительский   процесс   может   также   создать   два
подпроцесса, каждый из которых закроет ненужный ему конец программного
канала. Если  родитель не  хочет взаимодействовать  с порожденными  им
процессами, он  должен закрыть  оба конца  канала. Каналы  традиционно
использовались для  односторонней связи.  Если вы  хотели обмениваться
данными в  обоих направлениях,  вам нужно  было два канала. Реализация
pipe() в  SVR4 позволяет  передавать информацию  в обоих  направлениях
через один и тот же канал.
                         СИСТЕМНЫЙ ВЫЗОВ pipe

pipe(2)

ИМЯ

          pipe - создать программный канал для межпроцессной связи

ИСПОЛЬЗОВАНИЕ

          #include <unistd.h>

          int pipe (int fildes[2]);

ОПИСАНИЕ (Традиционное)
          pipe создает  механизм ввода/вывода,  называемый программным
          каналом, и  возвращает два  дескриптора файлов,  fildes[0] и
          fildes[1]. fildes[0]  открыт для  чтения, а  fildes[1] - для
          записи.

ОПИСАНИЕ (SVR4)
          pipe создает  механизм ввода/вывода,  называемый программным
          каналом, и  возвращает два  дескриптора файлов,  fildes[0] и
          fildes[1]. Файлы, связанные с fildes[1] и fildes[0] являются
          потоками, и оба открыты для чтения и записи.

          ... Из  fildes[0] читаются   данные, записанные в fildes[1],
          по  принципу   first-in-first-out  (FIFO),  а  из  fildes[1]
          читаются данные,  записанные в  fildes[0], также по принципу
          FIFO.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

          0 - успех

          -1 - неуспех, и errno установлена.