Программные каналы
Создание неименованного программного канала
pipe(fdptr);
- fdptr
- это указатель массива из двух целых чисел для размещения дескриптора
для чтения из программного канала (с помощью read)
и записи в программный канал (с помощью write)
- обычные дескрипторы файлов
- два элемента таблицы открытых файлов процесса
Создание именованных программных каналов
(или получение доступа к существующим)
Обычный системный вызов open
- если канал открывается на запись, и ни один процесс
не открыл его для чтения, то процесс блокируется до тех пор, пока
некоторый процесс не откроет этот канал для чтения
- аналогично обрабатывается открытие для чтения
- имеется флаг NO_DELAY
Запись и чтение: read
и write
- при записи данные помещаются в начало канала
- при чтении выбираются из конца канала
- возможны откладывания процессов
Окончание работы процесса: close
- при выполнении последнего закрытия канала по
записи все процессы, ожидающие чтения из программного канала,
активизируются с возвратом кода ошибки из системного вызова