Сводка операций, проводимых над процессами
Операции, служащие для запуска процессов, перечислены в таблице 14.1. Таблица 14.1. Операции запуска процессов
Операция |
Стандартний ввод |
Стандартний вывод |
Стандартний вывод ошибок |
Нужно ли ожидать завершення процесса |
System() |
Наследуется |
Наследуется |
Наследуется |
Да |
от программы |
от программы |
от программы |
||
Строка в обратных |
Наследуется от программы |
Принимается как строковое |
Наследуется от программы |
Да |
кавычках |
значение |
|||
Запуск |
Соединен с |
Наследуется |
Наследуется |
Только во |
процесса как деск |
дескриптором файла |
от программы |
от программы |
время вы-полнения |
риптора файла для |
close () |
|||
вывода при |
||||
помощи |
||||
команди |
||||
open() |
||||
Запуск |
Наследуется |
Соединен с |
Наследуется |
Только во |
процесса как деск |
от программы |
дескриптором файла |
от программы |
время вы-полнения |
риптора файла для |
close () |
|||
ввода при |
||||
помощи |
||||
команди |
||||
open() |
||||
fork, |
Выбирается |
Выбирается |
Выбирается |
Выбирается |
ехес, |
пользователем |
пользователем |
пользователем |
пользователем |
wait, |
||||
waitpid |
Самый простой способ создать процесе — использовать для зтого функ-цию system. На стандартный ввод, вывод и вывод ошибок зто не влияет (они наследуются от Perl-процесса). Строка в обратных кавычках создает процесе и передает данные со стандартного вывода зтого процесса как строковое значение для Perl-программы. Стандартный ввод и стандартный вывод ошибок не изменяются. Оба зти метода требуют завершення процесса до выполнения другого кода.
Простой способ получить асинхронний процесе (процесе, который по-зволяет продолжать выполнение Perl-программы до своего завершення) — открыть команду как дескриптор файла с созданием канала для стандартного ввода или стандартного вывода зтой команди. Команда, открытая как дескриптор файла для чтения, наследует стандартный ввод и стандартный вывод ошибок от Perl-программы; команда, открытая как дескриптор файла для записи, наследует от Perl-программы стандартный вывод и стандартный вывод ошибок.
Самый гибкий способ запустить процесе — заставить программу вызвать функции fork, ехес и wait или waitpid, которые полностью соответст-вуют своим UNIX-тезкам. С помощью зтих функции вы можете запустить какой-либо процесе синхронно или асинхронне, а также конфигурировать по своєму усмотрению стандартный ввод, стандартный вывод и стандартный вывод ошибок*.