Chinaunix首页 | 论坛 | 博客
  • 博客访问: 182504
  • 博文数量: 42
  • 博客积分: 2235
  • 博客等级: 大尉
  • 技术积分: 460
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-15 20:17
文章分类

全部博文(42)

文章存档

2012年(1)

2011年(7)

2010年(33)

2009年(1)

我的朋友

分类:

2010-01-28 21:42:03

puts ----向通道输出

语法:
puts ?-nonewline? ?channelId? string

描述:
将给定string输出到给定的channelId的通道,默认为stdout
channelId必须为一个打开通道(如tcl标准通道:stdout或者stderr),返回值由 open或者socket产生,或者结果通过tcl扩展产生,通道必须是打开的以便于输出
存在-nonewline选项表示输出不换行,对于换行,不同的系统有所不同(一般的PC,换行为\r\n,mac os为\r)

tcl 的buffer输出是等待性的,因此使用puts输出可能在输出文件或者设备上并不是立即显示,tcl一般存在一个时延即知道缓存慢或者通道关闭,我们可以使
用flush来达到立即输出的效果
当输出缓存填满,puts命令一般阻塞输出知道所有的内存数据已经被操作系统确认可以输出,默认为此种方式;
如果channleId为nonblocking模式,可以实时输出.tcl在后台继续
以底层文件和设备可接受的方式填充buffer并输出.这种应用必须使用tcl事件循环时间来保证以非阻塞性输出的方式工作;否则tcl永远不会知道file或者设备
已经准备好接收输出数据,这种方式可能导致瞬间或者长期占用大量内存,造成内存浪费.为避免这种情况,使用非阻塞方式一般结合fileevent一起使用

例子:
通过标准输出通道输出:
puts "hello,world!"

或者这种方式:
puts -nonewline "Hello, "
puts "World!"

通过标准错误通道输出:
puts stderr "Hello, World!"

将log追加到一个文件中:
set chan [open my.log a]
set timestamp [clock format [clock seconds]]
puts $chan "$timestamp - Hello, World!"
close $chan
阅读(5691) | 评论(0) | 转发(0) |
0

上一篇:unset命令

下一篇:嵌入式linux启动分析

给主人留下些什么吧!~~