TCL 错误“子进程异常退出”

问题描述 投票:0回答:1

我的文件.tcl

set  ...

puts "HELLO_1"
puts [my_pkg::whoami]
puts "HELLO_2"

my_pkg.tcl

namespace eval :: my_pkg{

namespace export  whoami

....

proc :: my_pkg::whoami{} {
set::my_pkg::RUN_1
.....

....

执行上述操作时,我收到此错误

“子进程异常退出”

如何解决这个问题,您能建议解决方法吗?


“whoami”不是 tcl 关键字,在 LINUX 中它返回帐户的用户 ID。 所以,基本上它告诉用户正在尝试访问该 pakcage“my_pkg”,但它不成功。

HELLO_1 出现 HELLO_2 没有出现在日志中

tcl
1个回答
0
投票

看来您的空格位置错误:

namespace eval :: my_pkg{

proc :: my_pkg::whoami{} { set::my_pkg::RUN_1 .....

Tcl 对空格非常敏感:它是面向单词的语言,所以你必须小心。

  • ::
    必须和名字一起拥抱
  • 前面必须有一个空格
    {

通过

proc
调用,我们定义了一个名为
::
的过程,它接受一个存储在名为
my_pkg::whoami{}
的变量中的参数——这将失败并出现错误,因为这不是 proc 参数的有效名称.

你需要

namespace eval ::my_pkg {
# ..............^^.....^

proc ::my_pkg::whoami {} { set::my_pkg::RUN_1 .....
# ....^^.............^

参见Tcl的12条规则

© www.soinside.com 2019 - 2024. All rights reserved.