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>
 | 
