Описанное решение требует отдельного процесса для поддержания открытого потока. При этом не существует какой-либо защиты от уничтожения процесса по какой-либо причине. Подсистема STREAMS поддерживает альтернативный выход из проблемной ситуации.
Вместо команд I_LINK и I_U N LI N К применяются команды I_PLINK и I_PUNLINK. Команда I_PLINK создает постоянные соединения, которые будут оставаться активными даже в том случае, если поток не открыт ни одним процессом. Такие соединения могут быть принудительно демонтированы при вызове команды I_PUNLINK с аргументом, содержащим идентификатор соединения, возвращенный ранее командой I_PLINK.
Одним из выигрышных качеств подсистемы STREAMS является простота реализации файлов FIFO и каналов. О файлах FIFO и каналах с точки зрения подсистемы взаимодействия процессов можно прочесть в разделе 6.2. В этой главе вы прочитаете описание реализации этих объектов в SVR4, а также увидите преимущества нового подхода.
Файлы FIFO STREAMS
Файлы FIFO также называют именованными каналами (named pipes). Процесс создает FIFO при помощи системного вызова mknod, передавая ему полное имя, разрешения и флаг S_IFIFO в качестве параметров. Файл может находиться в каталоге любой обычной файловой системы, например s5fs или ufs. После создания файла FIFO каждый процесс, знающий его имя, может производить в такой файл чтение или запись (если он обладает соответствующими полномочиями).
Файл продолжает существовать в системе до тех пор, пока не будет удален принудительно системным вызовом unlink. Ввод-вывод таких файлов осуществляется в порядке FIFO — «первым вошел, первым вышел». Таким образом, после открытия файл FIFO функционирует почти как обычный канал (конвейер).
Опубликовал katy
June 24 2015 22:07:15 ·
0 Комментариев ·
2416 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.