2018-02-05 17:22:04 +03:00
|
|
|
|
<!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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Открывает канал для связи с файлом или программой.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл только на чтение. Это значение по умолчанию.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>r+</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл на чтение и запись. Файл должен
|
|
|
|
|
существовать.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>w</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл только на запись. Удаляет содержимое
|
|
|
|
|
файла, если он существовал. Если нет, то создает новый
|
|
|
|
|
файл.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>w+</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл на чтение и запись. Удаляет содержимое
|
|
|
|
|
файла, если он существовал. Если нет, то создает новый
|
|
|
|
|
файл.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>a</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл на чтение. Файл должен
|
|
|
|
|
существовать. Новые данные записываются в конец файла.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>a+</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл на чтение и запись. Если файл не
|
|
|
|
|
существует, создает новый файл. Новые данные
|
|
|
|
|
записываются в конец файла.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл только на чтение.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>WRONLY</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл только на запись</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>RDWR</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Открывает файл на чтение и запись.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>APPEND</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Переставляет указатель в конец файла перед каждой
|
|
|
|
|
записью.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>CREAT</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Создает файл, если он не существует. Без этого флага
|
|
|
|
|
попытка открыть несуществующий флаг приведет к
|
|
|
|
|
ошибке.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>EXCL</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Если указан также флаг <strong>CREAT</strong>, то будет
|
|
|
|
|
сгенерирована ошибка, если файл уже существует.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>NOCTTY</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Если файл открыт для терминального устройства, этот флаг
|
|
|
|
|
не позволяет ему стать управляющим терминалом
|
|
|
|
|
процесса.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
|
<td><strong>NONBLOCK</strong></td>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<td>Если файл существует, то его содержимое удаляется.</td>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<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
|
|
|
|
|
2018-02-05 17:22:04 +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
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=КОНФИГУРИРОВАНИЕ></a>КОНФИГУРИРОВАНИЕ</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Эта опция включает 4 величины, записанные через запятую.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p><em>baud</em> - число, скорость передачи данных в Бодах (бит
|
|
|
|
|
в секунду);</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p><em>data</em> - число бит данных (целое от 5 до 8);</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p><em>stop</em> - число стоп битов (целое 1 или 2).</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ></a>
|
|
|
|
|
ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dl>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dt><strong>Windows</strong> (все версии)</dt>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Проблемы могут возникать при интерактивном выполнении Tcl,
|
|
|
|
|
поскольку в этом случае консоль используется и для Tcl, и для
|
|
|
|
|
порожденного подпроцесса.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>Windows 95</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd><p>Сложности при работе с 16-битовыми DOS-приложениями.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Также проблемы могут возникать при интерактивном выполнении
|
|
|
|
|
Tcl, поскольку в этом случае консоль используется и для Tcl,
|
|
|
|
|
и для порожденного подпроцесса.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
|
|
<dt><strong>Windows 3.X</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Те же проблемы, что и при выполнении команды <a
|
|
|
|
|
href=exec.html><strong>exec</strong></a>.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>Macintosh</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd><p>Открытие последовательного порта не поддерживается.</p>
|
|
|
|
|
<p>Открытие командного конвейера также не поддерживается.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
|
|
<dt><strong>Unix</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<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
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Проблемы могут возникать при интерактивном выполнении Tcl,
|
|
|
|
|
поскольку в этом случае консоль используется и для Tcl, и
|
|
|
|
|
для порожденного подпроцесса.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</dd>
|
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
|