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

66 lines
4.2 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>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>