Изучаем Perl

       

Сводка операций, проводимых над процессами


Операции, служащие для запуска процессов, перечислены в таблице 14.1. Таблица 14.1. Операции запуска процессов

Операция Стандартний ввод Стандартний

вывод

Стандартний вывод ошибок Нужно ли ожидать завершення процесса
System() Наследуется

Наследуется Наследуется Да
от программы от программы от программы
Строка в обратных Наследуется от программы Принимается как строковое Наследуется от программы Да
кавычках значение
Запуск Соединен с Наследуется Наследуется Только во
процесса как деск дескриптором файла от программы от программы время вы-полнения
риптора файла для close ()
вывода при
помощи
команди
open()
Запуск Наследуется Соединен с Наследуется Только во
процесса как деск от программы дескриптором файла от программы время вы-полнения
риптора файла для close ()
ввода при
помощи
команди
open()
fork, Выбирается Выбирается Выбирается Выбирается
ехес, пользователем пользователем пользователем пользователем
wait,
waitpid

Самый простой способ создать процесе — использовать для зтого функ-цию system. На стандартный ввод, вывод и вывод ошибок зто не влияет (они наследуются от Perl-процесса). Строка в обратных кавычках создает процесе и передает данные со стандартного вывода зтого процесса как строковое значение для Perl-программы. Стандартный ввод и стандартный вывод ошибок не изменяются. Оба зти метода требуют завершення процесса до выполнения другого кода.


Простой способ получить асинхронний процесе (процесе, который по-зволяет продолжать выполнение Perl-программы до своего завершення) — открыть команду как дескриптор файла с созданием канала для стандартного ввода или стандартного вывода зтой команди. Команда, открытая как дескриптор файла для чтения, наследует стандартный ввод и стандартный вывод ошибок от Perl-программы; команда, открытая как дескриптор файла для записи, наследует от Perl-программы стандартный вывод и стандартный вывод ошибок.

Самый гибкий способ запустить процесе — заставить программу вызвать функции fork, ехес и wait или waitpid, которые полностью соответст-вуют своим UNIX-тезкам. С помощью зтих функции вы можете запустить какой-либо процесе синхронно или асинхронне, а также конфигурировать по своєму усмотрению стандартный ввод, стандартный вывод и стандартный вывод ошибок*.


Содержание раздела