Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

Пользователей: 13,370
новичок: dogoco6
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

База данных студентов на Delphi + Microsoft SQL Server
Меры близости на векторах в Delphi + Блок схемы
Моделирование работы участка термической обработки шестерен на GPSS + По...

Каналы и файлы FIFO
Каналы и файлы FIFO — это элементы системы, представляющие потоки, функционирующие по принципу «первым вошел, первым вышел». Их основные отличия между собой заключаются в методе создания. Файл FIFO создается путем вызова mknod, после чего он может открываться и использоваться любым процессом, знающим его имя и обладающим соответствующими полномочиями.

Также может иметь смысл заглянуть на сайт eco-sklad.ru, ведь именно там можно узнать много нового на тему http://www.eco-sklad.ru/index.php?id=27. Тема экспертиза стеллажей может показаться на первый взгляд незначительной и даже не тематичной. Но стоит посетить сайт eco-sklad.ru, и тема экспертиза стеллажей начинает проявлять себя с неожиданной стороны и вызывает всё больший интерес. Дело в том, что тема экспертиза стеллажей очень подробно представлена на сайте eco-sklad.ru. Трудно найти более детальное освещение темы экспертиза стеллажей чем это сделано на сайте eco-sklad.ru. Спасибо сайту eco-sklad.ru за такое доскональное преподнесение темы экспертиза стеллажей.



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

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



Операции ввода-вывода для файлов FIFO и канал очень схожи. Одни процессы добавляют данные в конец элемента, в то время как процессы-получатели извлекают данные из его начала. После прочтения данных происходит их удаление из конвейера, после чего канал оказывается недоступным даже для других получателей. Ядром определен параметр PIPE_BUF (равный по умолчанию 5 120 байт), который ограничивает объем данных, хранящихся внутри конвейера. Если запись информации приводит к переполнению файла FIFO или канала, читающий процесс будет заблокирован до тех пор, пока из элемента не будет удалено достаточное количество данных (при помощи их считывания). Если процесс попытается за один прием произвести запись данных большего объема, чем значение PIPE_BUF, ядро не сумеет гарантировать неделимость операции записи. В этом случае данные могут оказаться перемешаны с информацией, записанной другими процессами.
Чтение из файла FIFO отличается немногим.


Если запрашиваемый размер данных оказывается большим, чем текущий объем элемента, ядро прочтет тот объем информации, который содержится в нем, и возвратит процессу количество считанных байтов. Если элемент в текущий момент не содержит данных, читающий процесс будет заблокирован до тех пор, пока другой процесс не произведет запись в канал. Флаг
0_NDELAY


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



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


Изначальная реализация каналов использовала файловую систему. Каждому каналу присваивался индексный дескриптор и список блокировки.

Во многих вариантах системы BSD для реализации каналов были использованы сокеты (см. раздел 17.10.3). В ОС SVR4 каналы и файлы FIFO построены на STREAMS. Более подробно о них вы прочтете в разделе 17.9. Каналы в SVR4 являются двунаправленными. Они поддерживают отдельные потоки данных, передаваемые в каждом направлении. Такой вариант более подходит для большинства приложений, требующих полнодуплексного механизма взаимодействия процессов.
Опубликовал katy July 08 2015 08:23:37 · 0 Комментариев · 2857 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Cooltray
Preview
Szwavepanel
Исправление проц...
ICQ
Секреты программи...
Delphi 2005 для W...
Графика в проекта...
Sztransppanel
PCX
Assembler. Учебни...
С. Г. Горнаков - ...
Х. М. Дейтел, П. ...
WinAmp
Ведение справочны...
Xrumer 4 Platinum...
Progressbar
RbControls
IpEditAdress
Библия хакера 2. ...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97836
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Обратные сортировк...
Файл компоновки ви...
SDECREMENT (УМЕНЬШ...
nl
Кнопки для перепос...
Трансляция списков...
Объект PageSetup
Учетные записиполь...
Треугольные массивы
Винтаж Дыши mp3 ск...
Что такое процессо...
Новейший гибкий O...
Введение в создани...
Конфигурируя бранд...
Интим магазин
Змейка на Visual P...
О вреде и пользе м...
Direct Oracle Access
Редактор плагинов
Моделирование и си...
Поиск
Вмешательство в пр...
Поле адреса 1 байт
Аффилиаты
Секреты: принцип р...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?