267 lines
8.6 KiB
HTML
267 lines
8.6 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>open</title>
|
||
</head>
|
||
|
||
<body>
|
||
<h1>open</h1>
|
||
|
||
<p>Открывает канал для связи с файлом или программой.</p>
|
||
|
||
<h2>СИНТАКСИС</h2>
|
||
|
||
<pre>
|
||
<strong>open</strong> <em>fileName</em>
|
||
<strong>open</strong> <em>fileName</em> <em>access</em>
|
||
<strong>open</strong> <em>fileName</em> <em>access</em> <em>permissions</em>
|
||
</pre>
|
||
|
||
<h2>ОПИСАНИЕ</h2>
|
||
|
||
<p>Эта команда открывает файл, последовательный порт или командный
|
||
конвейер и возвращает идентификатор канала, который может
|
||
использоваться в дальнейшем в таких командах, как <a
|
||
href="read.html"><strong>read</strong></a>, <a
|
||
href="puts.html"><strong>puts</strong></a> и <a
|
||
href="close.html"><strong>close</strong></a>. Если первый символ
|
||
атрибута <em>fileName</em> не равен <strong>|</strong>, то команда отрывает
|
||
файл <em>fileName</em>, соответственно значение аргумента fileName
|
||
должно соответствовать обычным соглашениям, описанным в п. <a
|
||
href="filename.html"><strong>filename</strong></a>.</p>
|
||
|
||
<p>Аргумент <em>access</em>, если он используется, указывает
|
||
разрешенные режимы доступа к файлу. Аргумент <em>access</em> может
|
||
указываться в одной из двух нотаций. В первой он может иметь
|
||
следующие значения:</p>
|
||
|
||
<table cellpadding="7" width="85%">
|
||
<tr>
|
||
<td><strong>r</strong></td>
|
||
|
||
<td>Открывает файл только на чтение. Это значение по умолчанию.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>r+</strong></td>
|
||
|
||
<td>Открывает файл на чтение и запись. Файл должен
|
||
существовать.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>w</strong></td>
|
||
|
||
<td>Открывает файл только на запись. Удаляет содержимое
|
||
файла, если он существовал. Если нет, то создает новый
|
||
файл.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>w+</strong></td>
|
||
|
||
<td>Открывает файл на чтение и запись. Удаляет содержимое
|
||
файла, если он существовал. Если нет, то создает новый
|
||
файл.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>a</strong></td>
|
||
|
||
<td>Открывает файл на чтение. Файл должен
|
||
существовать. Новые данные записываются в конец файла.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>a+</strong></td>
|
||
|
||
<td>Открывает файл на чтение и запись. Если файл не
|
||
существует, создает новый файл. Новые данные
|
||
записываются в конец файла.</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p>Во второй нотации аргумент <em>access</em> может содержать набор
|
||
из флагов, описанных ниже. Среди флагов обязательно должен быть
|
||
один из следующих: <strong>RDONLY</strong>, <strong>WRONLY</strong> или
|
||
<strong>RDWR</strong>.</p>
|
||
|
||
<table>
|
||
<tr>
|
||
<td><strong>RDONLY</strong></td>
|
||
|
||
<td>Открывает файл только на чтение.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>WRONLY</strong></td>
|
||
|
||
<td>Открывает файл только на запись</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>RDWR</strong></td>
|
||
|
||
<td>Открывает файл на чтение и запись.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>APPEND</strong></td>
|
||
|
||
<td>Переставляет указатель в конец файла перед каждой
|
||
записью.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>CREAT</strong></td>
|
||
|
||
<td>Создает файл, если он не существует. Без этого флага
|
||
попытка открыть несуществующий флаг приведет к
|
||
ошибке.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>EXCL</strong></td>
|
||
|
||
<td>Если указан также флаг <strong>CREAT</strong>, то будет
|
||
сгенерирована ошибка, если файл уже существует.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>NOCTTY</strong></td>
|
||
|
||
<td>Если файл открыт для терминального устройства, этот флаг
|
||
не позволяет ему стать управляющим терминалом
|
||
процесса.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>NONBLOCK</strong></td>
|
||
|
||
<td>Позволяет в неблокирующем режиме открыть файл и,
|
||
возможно, выполнять в этом режиме последующие операции
|
||
ввода/вывода. Последствия использования этого флага
|
||
зависят от платформы и устройства. Предпочтительнее
|
||
вместо него использовать команду <a href=
|
||
"fconfigure.html"><strong>fconfigure</strong></a>. Конкретные
|
||
особенности использования флага описаны в руководстве по
|
||
вашей операционной системе, системный вызов <a
|
||
href="open.html"><strong>open</strong></a>, флаг <strong>
|
||
O_NONBLOCK</strong>.
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td><strong>TRUNC</strong></td>
|
||
|
||
<td>Если файл существует, то его содержимое удаляется.</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p>Если файл создается при выполнении команды <strong>open</strong>, то
|
||
аргумент <em>permissions</em> (целое число) используется для
|
||
установки прав доступа к вновь созданному файлу. Значение по
|
||
умолчанию <strong>0666</strong>.</p>
|
||
|
||
<h2><a name="КОМАНДНЫЙ КОНВЕЙЕР"></a>КОМАНДНЫЙ КОНВЕЙЕР</h2>
|
||
|
||
<p>Если первый символ в <em>fileName</em> ``<strong>|</strong>'', то
|
||
считается, что остальные символы описывают командный конвейер,
|
||
который запускается так же, как командой <strong><a
|
||
href="exec.html">exec</a></strong>. В этом случае идентификатор
|
||
открытого канала может использоваться для ввода информации в
|
||
стандартный ввод запущенного конвейера или для чтения его
|
||
стандартного вывода в зависимости от значения аргумента
|
||
<em>access</em>. Если канал открыть только на запись, то
|
||
стандартный вывод конвейера направляется на текущий стандартный
|
||
вывод (если он не перенаправлен в конвейере). Если канал открыт
|
||
только на чтение, стандартный ввод для конвейера берется из
|
||
текущего стандартного ввода (если он не перенаправлен в
|
||
конвейере).</p>
|
||
|
||
<h2><a name="ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ"></a>ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ</h2>
|
||
|
||
<p>Если аргумент <em>fileName</em> указывает на параллельный порт,
|
||
то соответствующий порт открывается и инициализируется (реальные
|
||
действия в зависимости от платформы). Допустимые значения
|
||
<em>fileName</em> для различных платформ см. <a href=
|
||
"#ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ">
|
||
Особенности реализации на различных платформах</a>.</p>
|
||
|
||
<h2><a name="КОНФИГУРИРОВАНИЕ"></a>КОНФИГУРИРОВАНИЕ</h2>
|
||
|
||
<p>Команда <strong><a href="fconfigure.html">fconfigure</a></strong> может
|
||
быть использована для определения и изменения текущей
|
||
конфигурации канала. Для последовательного порта можно
|
||
использовать следующие опции.</p>
|
||
|
||
<p><strong>-mode</strong>
|
||
<em>baud</em>,<em>parity</em>,<em>data</em>,<em>stop</em></p>
|
||
|
||
<p>Эта опция включает 4 величины, записанные через запятую.</p>
|
||
|
||
<p><em>baud</em> - число, скорость передачи данных в Бодах (бит
|
||
в секунду);</p>
|
||
|
||
<p><em>parity</em> - четность, может принимать одно из значений
|
||
<strong>n</strong> (none), <strong>o</strong> (odd), <strong>e</strong> (even), <strong>m</strong>
|
||
(mark), <strong>s</strong> (space);</p>
|
||
|
||
<p><em>data</em> - число бит данных (целое от 5 до 8);</p>
|
||
|
||
<p><em>stop</em> - число стоп битов (целое 1 или 2).</p>
|
||
|
||
<h2><a name="ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ"></a>
|
||
ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ</h2>
|
||
|
||
<dl>
|
||
<dt><strong>Windows</strong> (все версии)</dt>
|
||
|
||
<dd>Аргумент <em>fileName</em> для сериальных портов должен иметь
|
||
форму <strong>comX</strong>, где <em>X</em> - число (обычно, от 1 до
|
||
4). Попытка открыть несуществующий порт приводит к
|
||
ошибке.</dd>
|
||
|
||
<dt><strong>Windows NT</strong></dt>
|
||
|
||
<dd>Проблемы могут возникать при интерактивном выполнении Tcl,
|
||
поскольку в этом случае консоль используется и для Tcl, и для
|
||
порожденного подпроцесса.</dd>
|
||
|
||
<dt><strong>Windows 95</strong></dt>
|
||
|
||
<dd><p>Сложности при работе с 16-битовыми DOS-приложениями.</p>
|
||
|
||
<p>Также проблемы могут возникать при интерактивном выполнении
|
||
Tcl, поскольку в этом случае консоль используется и для Tcl,
|
||
и для порожденного подпроцесса.</p>
|
||
</dd>
|
||
|
||
<dt><strong>Windows 3.X</strong></dt>
|
||
|
||
<dd>Те же проблемы, что и при выполнении команды <a
|
||
href="exec.html"><strong>exec</strong></a>.</dd>
|
||
|
||
<dt><strong>Macintosh</strong></dt>
|
||
|
||
<dd><p>Открытие последовательного порта не поддерживается.</p>
|
||
<p>Открытие командного конвейера также не поддерживается.</p>
|
||
</dd>
|
||
|
||
<dt><strong>Unix</strong></dt>
|
||
|
||
<dd><p>Обычно для открытия последовательного порта используется
|
||
значение <em>fileName</em> <strong>/dev/ttyX</strong>, где <em>X</em>
|
||
равно <strong>a</strong> или <strong>b</strong>, но можно также использовать
|
||
любой псевдофайл, назначенный на соответствующий порт.</p>
|
||
|
||
<p>Проблемы могут возникать при интерактивном выполнении Tcl,
|
||
поскольку в этом случае консоль используется и для Tcl, и
|
||
для порожденного подпроцесса.</p>
|
||
</dd>
|
||
</dl>
|
||
|
||
</body>
|
||
</html>
|
||
|