我对 tcl 中的命名管道有疑问。
首先,我使用 mkfifo 创建了管道:
mkfifo foo
然后执行以下 tcl 脚本:
set fifo [open "foo" r]
fconfigure $fifo -blocking 1
proc read_fifo {} {
global fifo
puts "calling read_fifo"
gets $fifo x
puts "x is $x"
}
puts "before file event"
fileevent $fifo readable read_fifo
puts "after file event"
当我运行 tcl 脚本时,它会等待一个事件而不输出任何内容。
然后,当我写信给fifo时:
echo "hello" > foo
现在,tcl 脚本打印出来:
before file event
after file event
为什么这里没有触发“read_fifo”函数调用?
谁能帮助我理解这种行为。