Ч а с т ь I главный редактор


Информационные технологии



Pdf көрінісі
бет28/90
Дата20.02.2023
өлшемі7.68 Mb.
#469824
1   ...   24   25   26   27   28   29   30   31   ...   90
moluch 342 ch1 9e2Iv3V (1)

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), конвейеры 
и прочие) позволяют лучше понимать работу компьютера на 
низком уровне.
Разработка многофункциональных информационных датчиков 
для автотранспорта и железнодорожного транспорта
Касаткина Марина Дмитриевна, студент;
Щербакова Кристина Денисовна, студент;
Бородин Андрей Андреевич, кандидат технических наук, доцент
Российский университет транспорта (МИИТ) (г. Москва)
В статье описана разработка многофункциональных информационных датчиков для автотранспорта и железнодорожного 
транспорта. Описаны основные свойства работы датчиков, ориентировочная цена и план реализации данного проекта.


Достарыңызбен бөлісу:
1   ...   24   25   26   27   28   29   30   31   ...   90




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет