Интегрированные сети ISDN

         

Для независимых процессов такой метод


Для независимых процессов такой метод обмена недоступен. Канальный обмен может быть запущен и с консоли. Например:



cat file.txt | wc



Здесь символ | олицетворяет создание канала между выводом из файла file.txt и программой wc, подсчитывающей число символов в словах. Процессы эти не являются независимыми, так как оба порождены процессом shell.

Метод FIFO (в BSD не реализован) сходен с канальным обменом, так как также организует лишь однонаправленный обмен. Такие каналы имеют имена, что позволяет их применять при обмене между независимыми процессами. FIFO – это отдельный тип файла в файловой системе UNIX. Для формирования FIFO используется системный вызов mknod.



int mknod(char *pathname, int mode, int dev);



где pathname – имя файла (FIFO),

mode – флаги владения и прав доступа,

dev – при создании FIFO игнорируется.

Допускается создание FIFO и из командной строки: mknod name p.

FIFO также как и обычные канала работают с соблюдением следующих правил.

  • Если из канала берется меньше байтов, чем там содержится, остальные остаются там для последующего чтения.


  • При попытке прочесть больше байт, чем имеется в канале, читающий процесс должен соответствующим образом обработать возникшую ситуацию.


  • Если в канале ничего нет и ни один процесс не открыл его на запись, при чтении будет получено нуль байтов. Если один или более процессов открыло канал на запись, вызов read будет заблокирован до появления данных.


  • В случае записи в канал несколькими процессами, эти данные не перемешиваются.


  • При попытке записать большее число байтов, чем это позволено каналом или FIFO, вызов write блокируется до освобождения нужного места. Если процесс предпринимает попытку записи в канал, не открытый ни одним из процессов для чтения, процессу посылается сигнал SIGPIPE, а вызов write присылает 0 с кодом ошибки errno=EPIPE.





Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий