You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Tcl文件执行Makefile时终端不打印执行步骤的问题

解决Tcl中exec执行make不打印步骤的问题

Tcl的exec命令默认会捕获子进程的标准输出(stdout)和标准错误(stderr),不会直接将内容输出到终端,这就是你看不到make执行步骤的原因。哪怕用catch捕获异常,也只是拿到执行结果,不会自动打印子进程的输出内容。

解决方案

给exec命令加上重定向参数,把子进程的输出直接导向当前终端的标准输出和标准错误:

proc buildMirus { } {
    # 重定向autogrn.sh的输出到终端
    exec ./autogrn.sh >@stdout 2>@stderr
    # 捕获make执行的异常,同时重定向输出到终端
    if { [catch { exec make -j 6 >@stdout 2>@stderr } errInfo] } {
        puts "Error occured while building: $errInfo"
    }
}

说明

  • >@stdout:将子进程的标准输出重定向到Tcl进程的标准输出(终端)
  • 2>@stderr:将子进程的标准错误重定向到Tcl进程的标准错误(终端)
  • 给catch加上errInfo参数,可以捕获具体的错误信息,方便排查问题

内容的提问来源于stack exchange,提问作者Ajoy Biswas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:43:18