exec

Синтаксис

exec LIST

Описание

Функция ехес выполняет системную команду и никогда не возвращает управление, кроме случая, когда запрошенная команда не существует как программа и выполняется непосредственно без обращения к оболочке (/bin/sh -с).
ПРИМЕЧАНИЕ
Если после выполнения внешней команды вам необходимо продолжить работу с программой, то вместо этой функции вы должны использовать вызов system.

В случае, если вы передаете ехес более одного аргумента либо если аргумент функции представляет собой массив, состоящий из нескольких элементов, функция вызывает системную функцию execvp с аргументами, заимствованными из аргументов ехес. Если же вы передали только один скалярный аргумент, этот аргумент вначале проверяется на наличие метасимволов оболочки. Если таковые обнаруживаются, то весь аргумент передается для дальнейшего разбора в/bin/sh -с. Если же таких символов нет, аргумент просто разбивается на отдельные слова и передается непосредственно в execvp, которая более эффективна с вычислительной точки зрения.
ПРИМЕЧАНИЕ
Функции ехес и system не сносят ваши выходные буферы, поэтому вам может потребоваться установить переменную $|, чтобы избежать потери выходных данных.

Примеры вызова функции:
ехес '/bin/echo', 'Переданные  аргументы: ', @ARGV;
ехес "sort $outfile | uniq";
Если вы хотите не просто перейти к выполнению программы, указанной первым аргументом, но хотите обмануть ОС, чтобы она продолжила выполнение внешней программы под именем вашей старой программы, вы можете указать программу, которую действительно хотите выполнить, как "косвенный объект" (без запятой)в начале списка LIST. Это автоматически приведет к интерпретации аргумента команды ехес как списка, даже если в нем на самом деле хранится только одно скалярное значение. Например:
$shell = '/bin/csh';
ехес $shell '-sh';  # утверждает, что это оболочка 
                    # или то же самое, но в более откровенной форме:
ехес {'/bin/csh'} '-sh';



2011-04-26 00:53:16 lykich

Thanks




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: