65 lines
2.8 KiB
HTML
65 lines
2.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>puts</title>
|
||
</head>
|
||
|
||
<body>
|
||
<h1>puts</h1>
|
||
|
||
<p>Команда записывает данные в канал.</p>
|
||
|
||
<h2>СИНТАКСИС</h2>
|
||
|
||
<pre>
|
||
<strong>puts</strong> ?<strong>-nonewline</strong>? ?<em>channelId</em>? <em>string</em>
|
||
</pre>
|
||
|
||
<h2>ОПИСАНИЕ</h2>
|
||
|
||
<p>Записывает символы из аргумента <em>string</em> в канал
|
||
<em>channelId</em>. Значение <em>channelId</em> должно быть
|
||
идентификатором канала, который вернула предыдущая команда <a
|
||
href="open.html"><strong>open</strong></a> или <a href=
|
||
"socket.html"><strong>socket</strong></a>. Соответствующий канал
|
||
должен быть открыт на запись. Если аргумент <em>channelId</em> не
|
||
указан, значение по умолчанию соответствует стандартному
|
||
выводу. Команда <strong>puts</strong> обычно выдает после <em>string</em>
|
||
символ новой строки, однако, если указана опция
|
||
<strong>-nonewline</strong>, этого не происходит.</p>
|
||
|
||
<p>Символы новой строки при выводе заменяются на
|
||
последовательность, используемую на данной платформе (например,
|
||
<strong>cr</strong> <strong>lf</strong> на Windows-платформах) в соответствии со
|
||
значением опции канала <strong>-translation</strong>. Опция может быть
|
||
изменена с помощью команды <a href=
|
||
"fconfigure.html"><strong>fconfigure</strong></a>.</p>
|
||
|
||
<p>Tcl осуществляет вывод через буфер. Поэтому символы, выданные
|
||
командой <strong>puts</strong>, могут и не появиться сразу в выходном
|
||
устройстве или в файле. Обычно вывод откладывается до заполнения
|
||
буфера или закрытия канала. Чтобы обеспечить немедленную выдачу
|
||
данных, можно использовать команду <a
|
||
href="flush.html"><strong>flush</strong></a>.</p>
|
||
|
||
<p>Когда буфер заполнится, команда <strong>puts</strong> обычно блокирует
|
||
процесс до тех пор, пока все данные не будут переданы
|
||
операционной системе для дальнейшего вывода. Если канал
|
||
<em>channelId</em> открыт в неблокирующем режиме, процесс не
|
||
блокируется, даже если операционная система еще не приняла
|
||
данные. Tcl в этом случае продолжает складывать данные в буфер и
|
||
в фоновом режиме передает их в соответствующий файл или
|
||
устройство с той скоростью, с которой они могут принять
|
||
данные. Чтобы работа в неблокирующем режиме была возможна,
|
||
необходимо, чтобы был запущен обработчик событий.</p>
|
||
|
||
<p>При работе в неблокирующем режиме возможен рост буфера, под
|
||
который будет выделен неоправданно большой объем памяти. Чтобы
|
||
избежать этого, неблокирующие операции ввода/вывода лучше делать
|
||
управляемыми по событиям. При этом новая порция данных не будет
|
||
передаваться в буфер, пока канал не будет готов к ее приему.</p>
|
||
|
||
</body>
|
||
</html>
|
||
|