26
Информационные технологии
Реализация конвейера (pipeline)
Для создания конвейера существует системный вызов pipe
он возвращает два файловых дескриптора — вход и выход кон-
вейера. Для соединения двух команд с помощью необходимо
сделать следующее:
1. создать конвейер;
2. первая команда должна читать данные из fd = 0 (stdin),
записывать во вход конвейера;
3. закрыть вход конвейера;
4. запомнить, из какого fd должна читать данные вторая
команда;
5. вторая команда должна читать данные из запомненного
fd, и записывать результат в fd = 1 (stdout);
6. закрыть выход конвейера.
В приведённом выше алгоритме подпрограмма execute com-
mand выполняется 2 раза (для первой и второй команды). Непо-
средственно перед fork необходимо запоминать из какого фай-
лового дескриптора команда должна читать данные, и в какой
файловый дескриптор записывать. А непосредственно после
fork необходимо совершить подмену файловых дескрипторов
с помощью системного вызова dup2.
Подмена заключается в следующем: например, программа
должна считывать данные из fd = 3, перед exec мы заменяем fd =
0 на fd = 3 так, чтобы в fd = 0 находилась копия/ссылка на fd = 3
(exec всегда читает из fd = 0 и записывает в fd = 1).
Подмена файлового дескриптора в дочернем процессе не
ломает файловые дескрипторы в основном, поэтому командная
оболочка может продолжать работать в обычном режиме.
Вывод
Выше была показана схема работы командной оболочки
поддерживающую конвейер. Понимание работы командных
оболочек, а также работы сущностей, которые они используют
(файловые дескрипторы, пиды (pid — process id), конвейеры
и прочие) позволяют лучше понимать работу компьютера на
низком уровне.
Разработка многофункциональных информационных датчиков
для автотранспорта и железнодорожного транспорта
Касаткина Марина Дмитриевна, студент;
Щербакова Кристина Денисовна, студент;
Бородин Андрей Андреевич, кандидат технических наук, доцент
Российский университет транспорта (МИИТ) (г. Москва)
В статье описана разработка многофункциональных информационных датчиков для автотранспорта и железнодорожного
транспорта. Описаны основные свойства работы датчиков, ориентировочная цена и план реализации данного проекта.
Достарыңызбен бөлісу: |