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