256 lines
9.0 KiB
HTML
256 lines
9.0 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>exec</title>
|
||
</head>
|
||
|
||
<body>
|
||
<h1>exec</h1>
|
||
|
||
<p>Команда запускает подпроцессы.</p>
|
||
|
||
<h2>СИНТАКСИС</h2>
|
||
|
||
<pre>
|
||
<strong>exec</strong> ?<em>switches</em>? <em>arg</em> ?<em>arg</em>...?
|
||
</pre>
|
||
|
||
<h2>ОПИСАНИЕ</h2>
|
||
|
||
<p> Аргументы команды определяют один или нескольких подпроцессов,
|
||
которые необходимо выполнить. Аргументы принимают форму
|
||
конвейера, в котором каждый <em>arg</em> задает одно слово
|
||
команды, а каждая отдельная команда порождает подпроцесс.</p>
|
||
|
||
<p>Если первые аргументы команды начинаются со знака
|
||
"-", они считаются ключами команды, а не частью
|
||
описания конвейера.</p>
|
||
|
||
<p>Возможные ключи:</p>
|
||
<dl>
|
||
<dt><strong>-keepnewline</strong></dt>
|
||
|
||
<dd>Сохраняет конечные пробелы в выходных данных
|
||
конвейера. Обычно они отсекаются.</dd>
|
||
|
||
<dt> <strong>-</strong></dt>
|
||
|
||
<dd> Отмечает конец ключей. Аргумент, следующий за этим ключом,
|
||
рассматривается как первый аргумент <em>arg,</em> даже если он
|
||
начинается со знака "-".</dd>
|
||
</dl>
|
||
|
||
<p>Перечисленные ниже аргументы (пары аргументов) используют не
|
||
для определения подпроцессов, а для перенаправления потоков
|
||
ввода и вывода между ними. В выражения типа
|
||
"<<em>fileName</em>" <em>fileName</em> может писаться
|
||
как отдельно, так и слитно
|
||
("<<em>fileName</em>>").</p>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<td>|</td>
|
||
|
||
<td>разделяет команды в конвейере. Стандартный вывод
|
||
предыдущей команды направляется на стандартный вход
|
||
следующей команды.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>|&</td>
|
||
|
||
<td>разделяет команды в конвейере. Стандартный вывод и
|
||
стандартный вывод ошибок предыдущей команды направляются
|
||
на стандартный вход следующей команды. Такое выражение
|
||
перебивает выражения типа 2> и >&.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>< <em>fileName</em></td>
|
||
|
||
<td>файл <em>fileName</em> отрывается и используется как
|
||
стандартный ввод для первой команды конвейера.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><@ <em>fileId</em></td>
|
||
|
||
<td>в этой форме <em>fileId</em> это идентификатор файла,
|
||
открытого с помощью команды <a href=
|
||
"open.html"><strong>open</strong></a>. Он используется как
|
||
стандартный ввод для первой команды конвейера. Файл должен
|
||
быть открыт для чтения.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><< <em>value</em></td>
|
||
|
||
<td><em>value</em> используется как стандартный ввод для
|
||
первой команды конвейера.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>> <em>fileName</em></td>
|
||
|
||
<td>Стандартный вывод последней команды перенаправляется в
|
||
файл <em>fileName</em> и перезаписывает его содержимое.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>2> <em>fileName</em></td>
|
||
|
||
<td>Стандартный вывод ошибок всех команд в конвейере
|
||
перенаправляется в файл <em>fileName</em> и перезаписывает
|
||
его содержимое.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>>& <em>fileName</em></td>
|
||
|
||
<td>Стандартный вывод последней команды и стандартный вывод
|
||
ошибок всех команд в конвейере перенаправляется в файл
|
||
<em>fileName</em> и перезаписывает его содержимое.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>>><em>fileName</em></td>
|
||
|
||
<td>Стандартный вывод последней команды перенаправляется в
|
||
файл <em>fileName</em> и добавляется к его прежнему
|
||
содержимому.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>2>><em>fileName</em></td>
|
||
|
||
<td>Стандартный вывод ошибок всех команд в конвейере
|
||
перенаправляется в файл <em>fileName</em> и добавляется к его
|
||
прежнему содержимому.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>>>& <em>fileName</em></td>
|
||
|
||
<td>Стандартный вывод последней команды и стандартный вывод
|
||
ошибок всех команд в конвейере перенаправляется в файл
|
||
<em>fileName</em> и добавляется к его прежнему содержимому.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>>@ <em> ileId</em></td>
|
||
|
||
<td>В этой форме <em>fileId</em> это идентификатор файла,
|
||
открытого с помощью команды <a href=
|
||
"open.html"><strong>open</strong></a>. Стандартный вывод
|
||
последней команды перенаправляется в файл <em>fileName</em>
|
||
и перезаписывает его содержимое. Файл должен быть открыт
|
||
для записи.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>2>@ <em>fileId</em></td>
|
||
|
||
<td>В этой форме <em>fileId</em> это идентификатор файла,
|
||
открытого с помощью команды <a
|
||
href="open.html"><strong>open</strong></a>. Стандартный вывод
|
||
ошибок всех команд в конвейере перенаправляется в файл
|
||
<em>fileName</em> и перезаписывает его содержимое. Файл должен
|
||
быть открыт для записи.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>>&@ <em>fileId</em></td>
|
||
|
||
<td>В этой форме <em>fileId</em> это идентификатор файла,
|
||
открытого с помощью команды <a href=
|
||
"open.html"><strong>open</strong></a>. Стандартный вывод
|
||
последней команды и стандартный вывод ошибок всех команд в
|
||
конвейере перенаправляется в файл <em>fileName</em> и
|
||
перезаписывает его содержимое. Файл должен быть открыт для
|
||
записи.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p>Если стандартный вывод последней команды конвейера не был
|
||
перенаправлен, то команда <strong>exec</strong> возвращает его
|
||
значение. Если одна из команд конвейера вернула код ошибки, была
|
||
прервана или приостановлена, то команда <strong>exec</strong> вернет код
|
||
ошибки. При этом сообщение об ошибке будет включать стандартный
|
||
вывод конвейера и сообщение об ошибке. В переменной
|
||
<a href="tclvars.html#errorCode"><strong>errorCode</strong></a> будет записана
|
||
дополнительная информация о последней встреченной ошибке. Если
|
||
хотя бы одна из команд конвейера пишет информацию об ошибках в
|
||
файл и стандартный вывод ошибок не перенаправлен, команда
|
||
<strong>exec</strong> вернет ошибку, сообщение об ошибке будет включать в
|
||
себя стандартный вывод конвейера, дополненный сообщениями об
|
||
ошибках (если их было несколько) и стандартным выводом
|
||
ошибок.</p>
|
||
|
||
<p>Если последний символ результата исполнения конвейера или
|
||
сообщения об ошибке - перевод каретки, то он будет удален из
|
||
результата или сообщения соответственно. Это соответствует
|
||
общему правилу Tcl, по которому возвращаемая величина, как
|
||
правило, не оканчивается символом перевода каретки. Однако, если
|
||
указана опция <strong>-keepnewline</strong>, символ перевода каретки в
|
||
конце сохраняется.<br> Если стандартный ввод конвейера не
|
||
перенаправлен с помощью символов "<",
|
||
"<<" или "<@", стандартный ввод в первую
|
||
команду конвейера осуществляется со стандартного ввода
|
||
приложения.</p>
|
||
|
||
<p>Если последним аргументом конвейера является "&",
|
||
конвейер выполняется в фоновом режиме. В этом случае команда
|
||
<strong>exec</strong> возвращает список идентификаторов всех процессов
|
||
конвейера. Стандартный вывод последней команды конвейера, если
|
||
он не перенаправлен, выводится на стандартный вывод
|
||
приложения. Стандартный вывод ошибок, если он не перенаправлен,
|
||
осуществляется в стандартный вывод ошибок приложения.</p>
|
||
|
||
<p>Первое слово в каждой команде считается именем команды. В нем
|
||
выполняются тильда - подстановки. Если получившийся при этом
|
||
результат не содержит слэшей, соответствующая команда ищется в
|
||
каталогах, перечисленных в переменной окружения PATH. Если имя
|
||
команды после подстановок содержит слэши, оно должно указывать
|
||
на исполняемый файл, доступный из текущего каталога. Никакие
|
||
другие подстановки в командах, например, принятые в shell
|
||
подстановки <strong>*</strong> и <strong>?</strong>, не выполняются.
|
||
</p>
|
||
|
||
<h2>ВОПРОСЫ ПЕРЕНОСИМОСТИ НА ДРУГИЕ ПЛАТФОРМЫ</h2>
|
||
|
||
<dl>
|
||
<dt><strong>Windows (все версии)</strong></dt>
|
||
|
||
<dd><p> Чтение и запись с использование <strong>``@ fileId'</strong>' не
|
||
работают. Исполнение 16- и 32-разрядных приложений
|
||
различается между собой и отличается от описанного выше. Tk
|
||
консоль не реализует всех стандартных возможностей
|
||
ввода/вывода.</p>
|
||
|
||
<p>В командах допускается использование как прямых, так и
|
||
обратных слэшей при указании пути команды. Однако, если путь
|
||
является аргументом команды, это может оказаться и не
|
||
так.</p>
|
||
|
||
<p>Двойной слэш в путях указывает на сетевой адрес.</p>
|
||
</dd>
|
||
|
||
<dt><strong>Windows NT</strong></dt>
|
||
|
||
<dd>Для выполнения встроенных команд shell, таких, как
|
||
<strong>dir</strong> или <strong>copy</strong>, перед ними необходимо указать
|
||
"<strong>cmd.exe /c</strong>".</dd>
|
||
|
||
<dt><strong>Windows 95</strong></dt>
|
||
|
||
<dd> Для выполнения встроенных команд shell, таких, как
|
||
<strong>dir</strong> или <strong>copy</strong>, перед ними необходимо указать
|
||
"<strong>command.com /c</strong>".</dd>
|
||
|
||
<dt><strong>Windows 3.X</strong></dt>
|
||
|
||
<dd>Возможности команды <strong>exec</strong> сильно ограничены.</dd>
|
||
|
||
<dt><strong>Macintosh</strong></dt>
|
||
|
||
<dd>Команда <strong>exec</strong> не реализована.</dd>
|
||
|
||
<dt><strong>Unix</strong></dt>
|
||
|
||
<dd> Команда <strong>exec</strong> позволяет исполнять любые приложения и
|
||
действует как описано выше.</dd>
|
||
|
||
</dl>
|
||
</body>
|
||
</html>
|