Perl / 15. Управление процессами

Одна из самых приятных сторон работы программиста – возможность запускать чужой код, чтобы вам не пришлось писать его своими силами. Пора узнать, как управлять дочерними процессами, запуская другие программы прямо из Perl. Как и во всем, что происходит в Perl, здесь действует известный девиз: «Это можно сделать несколькими способами», с различными вариациями и специальными возможностями. Если вам не понравился первый способ, продолжайте читать, и через пару страниц найдется решение, которое придется вам по вкусу. Perl отличается хорошей портируемостью; в предыдущих главах почти нет сносок, в которых бы говорилось, что некая функция работает в UNIX так, в Windows – иначе, а в VMS – еще как-нибудь. Но в том, что касается запуска других программ, ситуация изменяется: на Mac-intosh доступны одни программы, на Cray – другие. Примеры этой главы в основном ориентированы на UNIX; в других системах возможны некоторые отличия.
Статьи раздела '15. Управление процессами':
Ветвление
Кроме высокоуровневых интерфейсов, описанных ранее, Perl предоставляет практически прямой доступ к низкоуровневым системным функциям UNIX и других систем. Если ранее вы никогда не имели дела с этой областью1, вероятно, этот раздел...
Выполнение команд в обход командного процессора
Оператор system также может вызываться с несколькими аргументами. В этом случае командный процессор не используется, какой бы сложной ни была команда: my $tarfile = "something*wicked.tar"; my @dirs = qw(fred|flintstone betty ...
Обратные апострофы в списочном контексте
Если результат выполнения команды состоит из нескольких строк, в скалярном контексте обратные апострофы возвращают одну длинную строку с внутренними символами новой строки. Однако при использовании той же строки в списочном контек...
Обратные апострофы и сохранение вывода
При использовании обеих функций system и exec выходные данные запущенной команды направляются в стандартный поток вывода Perl. Иногда бывает нужно сохранить этот вывод в строковом виде для дальнейшей обработки. Задача решается про...
Отправка и прием сигналов
Сигнал UNIX представляет собой крошечное сообщение, отправленное процессу. Он не может содержать подробной информации; представьте себе автомобильный сигнал – что он может означать? «Осторожно, здесь обвалился мост», или «Светофор...
Переменные среды
При запуске другого процесса (любым из описанных способов) может возникнуть необходимость в подготовке среды выполнения. Как упоминалось ранее, процесс можно запустить с определенным рабочим каталогом, который наследуется от текущ...
Процессы как файловые дескрипторы
До настоящего момента рассматривался исключительно синхронный запуск процессов, когда Perl заправляет всем происходящим, запускает команду, (обычно) дожидается ее завершения и получает вывод. Но Perl также может запускать дочерние...
Функция exec
Практически все, что было сказано о синтаксисе и семантике system, также относится к функции exec – кроме одного (очень важного) обстоятельства. Функция system создает дочерний процесс, который берется за свою работу, пока Perl те...
Функция system
Для запуска дочернего процесса в Perl проще всего воспользоваться функцией system. Например, выполнение команды UNIX date в Perl выглядит так: system "date"; Дочерний процесс выполняет команду date, которая наследует от Perl...

Страницы: 1