projman/hlp/ru/tcl/puts.html

66 lines
4.2 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>puts</title>
</head>
<body>
<h1>puts</h1>
<p>Команда записывает данные в канал.</p>
2015-10-19 13:27:31 +03:00
<h2>СИНТАКСИС</h2>
2015-10-19 13:27:31 +03:00
<pre>
<strong>puts</strong> ?<strong>-nonewline</strong>? ?<em>channelId</em>? <em>string</em>
</pre>
<h2>ОПИСАНИЕ</h2>
2015-10-19 13:27:31 +03:00
<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>
2015-10-19 13:27:31 +03:00
<p>Символы новой строки при выводе заменяются на
последовательность, используемую на данной платформе (например,
<strong>cr</strong> <strong>lf</strong> на Windows-платформах) в соответствии со
значением опции канала <strong>-translation</strong>. Опция может быть
изменена с помощью команды <a href=
fconfigure.html><strong>fconfigure</strong></a>.</p>
2015-10-19 13:27:31 +03:00
<p>Tcl осуществляет вывод через буфер. Поэтому символы, выданные
командой <strong>puts</strong>, могут и не появиться сразу в выходном
устройстве или в файле. Обычно вывод откладывается до заполнения
буфера или закрытия канала. Чтобы обеспечить немедленную выдачу
данных, можно использовать команду <a
href=flush.html><strong>flush</strong></a>.</p>
2015-10-19 13:27:31 +03:00
<p>Когда буфер заполнится, команда <strong>puts</strong> обычно блокирует
процесс до тех пор, пока все данные не будут переданы
операционной системе для дальнейшего вывода. Если канал
<em>channelId</em> открыт в неблокирующем режиме, процесс не
блокируется, даже если операционная система еще не приняла
данные. Tcl в этом случае продолжает складывать данные в буфер и
в фоновом режиме передает их в соответствующий файл или
устройство с той скоростью, с которой они могут принять
данные. Чтобы работа в неблокирующем режиме была возможна,
необходимо, чтобы был запущен обработчик событий.</p>
2015-10-19 13:27:31 +03:00
<p>При работе в неблокирующем режиме возможен рост буфера, под
который будет выделен неоправданно большой объем памяти. Чтобы
избежать этого, неблокирующие операции ввода/вывода лучше делать
управляемыми по событиям. При этом новая порция данных не будет
передаваться в буфер, пока канал не будет готов к ее приему.</p>
2015-10-19 13:27:31 +03:00
</body>
</html>