小编Dan*_*ich的帖子

获取TCL中open创建的进程的返回码

现在我正在通过 open 调用外部 bash 脚本,因为该脚本可能会运行几秒钟,也可能会运行几分钟。唯一可以确定的是:

  1. 它将输出必须向用户显示的文本。不是在脚本完成之后,而是在脚本仍在运行时。
  2. 会设置一个不同含义的返回码

读取并使用 shell 脚本输出的文本确实有效。但我不知道如何读取返回码。

(简化的)TCL 脚本如下所示:

#!/usr/bin/tclsh

proc run_script {} {
    set script "./testing.sh"

    set process [open "|${script}" "r"]
    chan configure $process -blocking 0 -translation {"lf" "lf"} -encoding "iso8859-1"

    while {[eof $process] == 0} {
        if {[gets $process zeile] != -1} {
            puts $zeile
        }

        update
    }
    close $process

    return "???"
}

set rc [run_script]
puts "RC = ${rc}"
Run Code Online (Sandbox Code Playgroud)

(简化的)shell 脚本看起来像这样:

#!/bin/bash

echo Here
sleep 1
echo be
sleep 2
echo dragons
sleep 4 …
Run Code Online (Sandbox Code Playgroud)

tcl

5
推荐指数
1
解决办法
1126
查看次数

标签 统计

tcl ×1