Канал – это логическое устройство ввода-вывода с последовательным побайтным доступом и буфером данных, организованным по принципу FIFO.
Как и обычное устройство, каналы управляются соответствующим менеджером. Так как каналы имитируются программно, и при этом используется только ОЗУ для организации буфера, то драйвер устройства не нужен. Для этого есть нуль драйвер.
Как и к обычному устройству, для доступа к каналу процессы должны открыть к нему путь доступа, используя соответствующую стандартную функцию ввода-вывода.
Чтение из пустого канала и запись в полный канал не допустимо.
Различают два типа каналов: именованный и неименованный.
В системе может быть создан только один неименованный канал и один путь доступа к нему, и произвольное число именованных каналов и произвольное число путей доступа к ним.
Программа может создать новый канал при помощи стандартных си-функций: create, открыть существующий канал с помощью open,читать и записывать данные read и write, close.
По умолчанию при создании канала ему определяется объем 90 байтов, длина кратна 16 байтам.
Системная функция _gs_rgy( ) – позволяет определить количество данных уже находящихся в канале, ее использует процесс поставщик для контроля за заполнением буфера.
Приемнику эта функция может быть полезна для приема информации, которую реально можно прочитать из канала.
С помощью системной функции _ss_ssig( ) каналу дается указание на посылку данного сигнала после записи данных в канал.