projman/hlp/ru/tcl/open.html
2018-02-05 17:23:37 +03:00

268 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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