Provided by:
manpages-zh_1.5.1-2_all 
NAME
puts - 向一个通道写
SYNOPSIS
puts ?-nonewline? ?channelId? string
_________________________________________________________________
DESCRIPTION
把用 string 给出的字符写到用 channelId 给出的通道中。 ChannelId
必须是从以前的 open 或 socket
调用返回的一个通道标识符。它必须为输出而打开。如果未指定 channelId
则取省为 stdout。Puts 通常在 string
后面输出一个换行字符,但可以通过指定 -nonewline 开关来禁止这个特征。
puts 依照给这个通道的 -translation
选项的值把在输出中换行(Newline)字符转换成特定于平台的行结束序列(例如,在
PC 上换行一般被替换成回车换行(carriage-return-linefeed)序列;在
Macintoshe 上换行通常被替换成回车符(carriage-returns))。关于 fconfigure
如何改变输出的讨论请参见 fconfigure 手册条目。
Tcl 在内部缓冲输出,所以用 puts
写的字符可能不会在输出文件或设备上立即出现;Tcl
通常延迟输出,一直等到缓冲区满了或通道被关闭。你可以通过 flush
命令强制输出立即出现。
当输出缓冲被添满的时候,在所有缓冲的数据被操作系统接受以便输出之前,puts
命令将一直阻塞。如果 channelId
在非阻塞模式下,那么即使操作系统不接受这些数据,puts
命令也不阻塞。作为替代,Tcl
继续缓冲这些数据并在后台以底层的文件或设备可以接受的速度写它们。要使非阻塞的输出工作应用必须使用
Tcl 事件鸦罚环裨 Tcl 不能发现文件或设备已-
准备好接收更多的输出数据。在非阻塞模式下的一个通道可以缓冲任意数量的数据,这可能消耗大量的内存。要避免浪费内存,非阻塞
I/O 通常应该以事件驱动的方式用于 fileevent
命令(除非在通过一个文件事件得到指示,通知你通道已-
准备好接收更多的数据,否则不要调用 puts)。
SEE ALSO
file(n), fileevent(n)
KEYWORDS
channel, newline, output, write
[[2001/10/17
Linux man:
http://cmpp.linuxforum.net