使用fileevent尾随本地文件



我正在尝试使用fileevent尾部(应该只能使用TCL 8.4版本,所以我不能使用chan命令(。

% proc GetData {chan} {
 set data [read $chan]
    puts "[string length $data] $data"
    if {[eof $chan]} {
        fileevent $chan readable {}
    }
}
% 
% 
% 
%  set fp [open "|tail -f /home/dinesh/input" r+]
file7
% fconfigure $fp
-blocking 1 -buffering full -buffersize 4096 -encoding utf-8 -eofchar {{} {}} -translation {auto lf}
% fconfigure $fp -blocking 0  -buffering  line 
% 
% 
% 
% 
%  fileevent $fp readable [list GetData $fp]
% 

我使用cat命令在另一个终端中更改了文件内容,但仍未调用GetData

使用gets $fp line,我能够获得修改后的内容,但是为什么没有触发FileEvent?

仅在运行事件循环时出现使用fileevent的回调,而tclsh默认情况下不会为您运行事件循环。尝试这样做以查看我的假设是否正确:

update

如果是,您需要设计自己的程序以在回调驱动的情况下工作。运行事件循环的标准方法是:

vwait forever
# Any global variable name would do, but “forever” has a nice feel

,但这对您的互动测试有所帮助。(这是一种方式是加载TK软件包;默认情况下打开运行事件循环,因此您无需明确的操作。并给您窗口来管理,因此并非没有后果……(

相关内容

  • 没有找到相关文章

最新更新