Tcl 调用函数时发生系统调用错误
我正在调用一个函数,如下所示:Tcl 调用函数时发生系统调用错误,tcl,Tcl,我正在调用一个函数,如下所示: write_phy 1 0 0x100 而函数write_phy是: proc write_phy {phy register value} { if { [regexp {^0} $value] } { scan $value "%o" value } if {$::DEBUG} { puts [format "Write PHY %s register %s = 0x%0.8X" $phy $register
write_phy 1 0 0x100
而函数write_phy是:
proc write_phy {phy register value} {
if { [regexp {^0} $value] } {
scan $value "%o" value
}
if {$::DEBUG} {
puts [format "Write PHY %s register %s = 0x%0.8X" $phy $register $value]
}
# exec ./write_phy.pl $phy $register $value
}
after 1;
执行该函数时,我收到一个系统调用错误,尽管print语句工作正常:
Write PHY 1 register 0 = 0x00000000
Disallowed system call: SYS__newselect
代码中的其他函数运行良好
请帮助。如果我让代码在Tcl 8.6(Raspbian)上运行,它会告诉我它需要一个整数,但得到了“256”。您使用的是什么版本的Tcl和什么操作系统?您运行的是Tcl(如Etcl)或其他发行版吗
另外,当将脚本加载到解释器中时,全局上下文中的“1后”仅暂停一毫秒。这与错误本身无关。我想您可以删除它。我没有发现您给出的代码与
tcl
中的错误消息有任何关系。是否触发已注释的perl代码?它是做什么的?它执行一个perl脚本,但是它的注释是无论如何的。Shi Dinesh,我已经编辑了代码:底部有“after 1;”。这可能是导致问题的原因。我认为问题出现了,因为我在codepad.org中编译代码,这可以解释问题。after
命令在其内部执行一个select()
调用(以各种方式),但是没有真正的理由首先在代码板上尝试代码,因为这样就不会有您试图与之对话的硬件…