puts
Имя
puts — Запись в каналСинтаксис
puts ?-nonewline? ?channelId? stringОписание
Записывает символы, заданные string, в канал, заданный channelId.ChannelId должен быть идентификатором открытого канала, например, стандартного канала Tcl (stdout или stderr), результата вызова open или socket, или результата команды создания канала, предоставляемой расширением Tcl. Канал должен быть открыт для вывода.
Если channelId не указан, он по умолчанию равен stdout. Puts обычно выводит символ новой строки после string, но эта функция может быть подавлена путём указания переключателя -nonewline.
Символы новой строки в выводе преобразуются командой puts в специфичные для платформы последовательности окончания строки в соответствии с текущим значением опции -translation для канала (например, на ПК новые строки обычно заменяются последовательностями возврат каретки-перевод строки. См. справочную страницу fconfigure для обсуждения способов, которыми fconfigure изменит вывод.
Tcl буферизует вывод во внутренней памяти, поэтому символы, записанные с помощью puts, могут не появиться немедленно в выходном файле или устройстве; Tcl обычно откладывает вывод до тех пор, пока буфер не заполнится или канал не закроется. Вы можете принудительно отобразить вывод немедленно с помощью команды flush.
Когда буфер вывода заполняется, команда puts обычно блокируется до тех пор, пока все данные буфера не будут приняты для вывода операционной системой. Если channelId находится в режиме без блокировки, команда puts не будет блокироваться, даже если операционная система не может принять данные. Вместо этого Tcl продолжает буферизовать данные и записывает их в фоновом режиме так быстро, как это позволяет основное устройство или файл. Приложение должно использовать цикл событий Tcl для работы с выводом без блокировки; в противном случае Tcl никогда не узнает, что файл или устройство готовы для получения дополнительных данных вывода. Возможно, что для канала в режиме без блокировки будет буферизовано произвольно большое количество данных, что может привести к большому расходу памяти. Чтобы избежать потери памяти, ввод-вывод без блокировки обычно следует использовать в режиме обработки событий с помощью команды fileevent (не вызывайте puts, если вы недавно не получили уведомление посредством события файла о том, что канал готов для получения дополнительных данных вывода).
Примеры
Вывести короткое сообщение в консоль (или куда направлен stdout):puts "Hello, World!"
Вывести сообщение в несколько частей:
puts -nonewline "Hello, " puts "World!"
Вывести сообщение в канал стандартной ошибки:
puts stderr "Hello, World!"
Добавить сообщение журнала в файл:
set chan [open my.log a] set timestamp [clock format [clock seconds]] puts $chan "$timestamp - Hello, World!" close $chan
См. также
file, fileevent, Tcl_StandardChannels
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/puts.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/puts.htm