projman/hlp/ru/tcl/open.html

268 lines
12 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
2015-10-19 13:27:31 +03:00
<html>
<head>
<title>open</title>
</head>
<body>
<h1>open</h1>
<p>Открывает канал для связи с файлом или программой.</p>
2015-10-19 13:27:31 +03:00
<h2>СИНТАКСИС</h2>
2015-10-19 13:27:31 +03:00
<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%>
2015-10-19 13:27:31 +03:00
<tr>
<td><strong>r</strong></td>
<td>Открывает файл только на чтение. Это значение по умолчанию.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>r+</strong></td>
<td>Открывает файл на чтение и запись. Файл должен
существовать.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>w</strong></td>
<td>Открывает файл только на запись. Удаляет содержимое
файла, если он существовал. Если нет, то создает новый
файл.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>w+</strong></td>
<td>Открывает файл на чтение и запись. Удаляет содержимое
файла, если он существовал. Если нет, то создает новый
файл.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>a</strong></td>
<td>Открывает файл на чтение. Файл должен
существовать. Новые данные записываются в конец файла.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>a+</strong></td>
<td>Открывает файл на чтение и запись. Если файл не
существует, создает новый файл. Новые данные
записываются в конец файла.</td>
2015-10-19 13:27:31 +03:00
</tr>
</table>
<p>Во второй нотации аргумент <em>access</em> может содержать набор
из флагов, описанных ниже. Среди флагов обязательно должен быть
один из следующих: <strong>RDONLY</strong>, <strong>WRONLY</strong> или
2015-10-19 13:27:31 +03:00
<strong>RDWR</strong>.</p>
<table>
<tr>
<td><strong>RDONLY</strong></td>
<td>Открывает файл только на чтение.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>WRONLY</strong></td>
<td>Открывает файл только на запись</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>RDWR</strong></td>
<td>Открывает файл на чтение и запись.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>APPEND</strong></td>
<td>Переставляет указатель в конец файла перед каждой
записью.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>CREAT</strong></td>
<td>Создает файл, если он не существует. Без этого флага
попытка открыть несуществующий флаг приведет к
ошибке.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>EXCL</strong></td>
<td>Если указан также флаг <strong>CREAT</strong>, то будет
сгенерирована ошибка, если файл уже существует.</td>
2015-10-19 13:27:31 +03:00
</tr>
<tr>
<td><strong>NOCTTY</strong></td>
<td>Если файл открыт для терминального устройства, этот флаг
не позволяет ему стать управляющим терминалом
процесса.</td>
2015-10-19 13:27:31 +03:00
</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>
2015-10-19 13:27:31 +03:00
O_NONBLOCK</strong>.
</td>
</tr>
<tr>
<td><strong>TRUNC</strong></td>
<td>Если файл существует, то его содержимое удаляется.</td>
2015-10-19 13:27:31 +03:00
</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>
2015-10-19 13:27:31 +03:00
<h2><a name=ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ></a>ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ</h2>
<p>Если аргумент <em>fileName</em> указывает на параллельный порт,
то соответствующий порт открывается и инициализируется (реальные
действия в зависимости от платформы). Допустимые значения
<em>fileName</em> для различных платформ см. <a href=
#ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ>
Особенности реализации на различных платформах</a>.</p>
2015-10-19 13:27:31 +03:00
<h2><a name=КОНФИГУРИРОВАНИЕ></a>КОНФИГУРИРОВАНИЕ</h2>
2015-10-19 13:27:31 +03:00
<p>Команда <strong><a href=fconfigure.html>fconfigure</a></strong> может
быть использована для определения и изменения текущей
конфигурации канала. Для последовательного порта можно
использовать следующие опции.</p>
2015-10-19 13:27:31 +03:00
<p><strong>-mode</strong>
<em>baud</em>,<em>parity</em>,<em>data</em>,<em>stop</em></p>
<p>Эта опция включает 4 величины, записанные через запятую.</p>
2015-10-19 13:27:31 +03:00
<p><em>baud</em> - число, скорость передачи данных в Бодах (бит
в секунду);</p>
2015-10-19 13:27:31 +03:00
<p><em>parity</em> - четность, может принимать одно из значений
2015-10-19 13:27:31 +03:00
<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>
2015-10-19 13:27:31 +03:00
<p><em>stop</em> - число стоп битов (целое 1 или 2).</p>
2015-10-19 13:27:31 +03:00
<h2><a name=ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ></a>
ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ</h2>
2015-10-19 13:27:31 +03:00
<dl>
<dt><strong>Windows</strong> (все версии)</dt>
2015-10-19 13:27:31 +03:00
<dd>Аргумент <em>fileName</em> для сериальных портов должен иметь
форму <strong>comX</strong>, где <em>X</em> - число (обычно, от 1 до
4). Попытка открыть несуществующий порт приводит к
ошибке.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>Windows NT</strong></dt>
<dd>Проблемы могут возникать при интерактивном выполнении Tcl,
поскольку в этом случае консоль используется и для Tcl, и для
порожденного подпроцесса.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>Windows 95</strong></dt>
<dd><p>Сложности при работе с 16-битовыми DOS-приложениями.</p>
2015-10-19 13:27:31 +03:00
<p>Также проблемы могут возникать при интерактивном выполнении
Tcl, поскольку в этом случае консоль используется и для Tcl,
и для порожденного подпроцесса.</p>
2015-10-19 13:27:31 +03:00
</dd>
<dt><strong>Windows 3.X</strong></dt>
<dd>Те же проблемы, что и при выполнении команды <a
href=exec.html><strong>exec</strong></a>.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>Macintosh</strong></dt>
<dd><p>Открытие последовательного порта не поддерживается.</p>
<p>Открытие командного конвейера также не поддерживается.</p>
2015-10-19 13:27:31 +03:00
</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>
2015-10-19 13:27:31 +03:00
<p>Проблемы могут возникать при интерактивном выполнении Tcl,
поскольку в этом случае консоль используется и для Tcl, и
для порожденного подпроцесса.</p>
2015-10-19 13:27:31 +03:00
</dd>
</dl>
</body>
</html>