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



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

Выполнение команды
В блоке выполнения программы мы должны определить
какой тип команды мы собираемся выполнять (встроенную, 
или внешнюю). Разница заключается в том, что встроенные ко-
манды выполняются основном процессе командной оболочки
а внешние необходимо выполнять в дочернем процессе. Это 
связано с особенностью работы системного вызова exec: в UNIX 
системах новая программа полностью запускается в вызыва-
ющем процессе, и, после окончания выполнения, завершается 
вместе с вызвавшим его процессом.
Чтобы выполнить другую программу, не закрывая ко-
мандную оболочку, необходимо создать копию процесса ко-
мандной оболочки (системный вызов fork), и в дочернем 
процессе запустить необходимую команду. Блок-схема подпро-
граммы execute command представлена на рисунке 2.
После выполнения fork, основной (родительский) процесс 
начинает выполняться одновременно с дочерним. Родитель-
ский процесс ждет (wait pid), пока выполнится дочерний. Это 
необходимо, чтобы затем сообщить пользователю код завер-
шения выполняемой программы.
Подпрограмма dup file descriptor выполняет подмену фай-
ловых дескрипторов. Файловый дескриптор простыми сло-
вами — это описатель потока ввода-вывода, т. е. сущность, 
благодаря которой мы можем передавать данные между про-
цессами, и даже выводить их на экран для пользователя (ис-
пользуя стандартные файловые дескрипторы stdin, stdout, 
stderr). Подмена необходима для тех случаев, когда процессу не-
обходимо считать данные из конвейера или записать их в него.


“Young Scientist”  # 52 (342)  December 2020
25
Information Technology
Рис.
 1. Основной цикл программы
Рис.
 2. Подпрограмма execute command


«Молодой учёный» . № 52 (342)  . Декабрь 2020 г.


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




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

    Басты бет