русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Именованные каналы в Linux

Именованные каналы в Linux (в UNIX их иногда называют FIFO) могут использоваться как средство взаимодействия между неродственными и даже удаленными процессами. Такой канал имеет внешнее имя, которое включается в пространство имен файловой системы. Поэтому именованный канал еще более похож на файл, чем неименованный. В системе канал представляется специальным файлом и создается специальным системным вызовом:

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

Этот системный вызов может использоваться также и для создания обычных файлов, каталогов и других специальных файлов. Параметр name этого вызова является указателем на символьную строку, содержащую имя канала (имя может включать в себя также и путь). Параметр mode определяет тип создаваемого файла и режим доступа к нему. Старшие 7 бит этого числа определяют тип создаваемого файла (для именованного канала он может кодироваться макроконстантой: S_IFIFO, младшие 9 бит определяют права доступа "rwx" для владельца (старшая тройка), для группы (средняя тройка), для всех прочих (младшая тройка). Так, например, для канала, который будет доступен только для владельца, код параметра mode будет S_IFIFO|0x140, а для канала, доступного для всех-всех-всех - S_IFIFO|0x1B6. (Естественно, право "x " для канала не определяется.) Третий параметр при создании канала задается 0.

Далее при работе с именованным каналом используются файловые системные вызовы:

    int open(int *name, int oflag);
    int read(int pipe_fd, void *area, int cnt);
    int write(int pipe_fd, void *area, int cnt);
    int close(int pipe_fd);

Обратите внимание на то, что при открытии файла-канала могут быть заданы флаги открытия, среди которых может быть и флаг O_NDELAY. Если именованный канал открыт с этим флагом, то процесс, работающий с именованным каналом, не переходит в ожидание в тех случаях, которые приводят к приостановке процесса, работающего с неименованным каналом, - вместо этого системные вызовы read и write заканчиваются с признаком ошибки.

Именованный канал является постоянным объектом, он сохраняется даже после завершения создавшего его процесса и при необходимости должен быть уничтожен явно - при помощи системного вызова:

    int unlink(char *name);

Пример выполнения приведен здесь.


Справочный материал

Избранные системные вызовы Linux/Unix. Краткое описание.

Cправочник библиотечных функция языка С: часть 1, часть 2 (кодировка кириллица ibm866).


Просмотров: 11191

Вернуться в оглавление:ОС Linux




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.