puts(3tcl)

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