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