puts - 向一個通道寫
puts ?
-nonewline? ?
channelId?
string
把用
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)。
file(n),
fileevent(n)
channel, newline, output, write
寒蟬退士
2001/10/17
http://cmpp.linuxforum.net
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh