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