我一直在尝试使用catch和exec来运行一个在最后返回int的已编译C程序,但到目前为止,我只能得到返回值0和1,0,当c返回时程序返回0和1其他任何东西。 有没有办法从C程序中获得任何返回值(例如5)?
答案 0 :(得分:1)
是。使用catch
命令的第三个参数来检索返回选项:
set returnvalue 0
if { [catch { exec ./myprogram } result retopts] } {
lassign [dict get $retopts -errorcode] class pid retcode
set returnvalue 1
if { $class eq "CHILDSTATUS" } {
set returnvalue $retcode
}
}
也可以使用try / on error
块:
try {
exec ./myprogram
set returnvalue 0
} on error {result retopts} {
lassign [dict get $retopts -errorcode] class pid retcode
set returnvalue 1
if { $class eq "CHILDSTATUS" } {
set returnvalue $retcode
}
}
修改: try / trap
示例:
set returnvalue 1
try {
exec ./myprogram
set returnvalue 0
} trap {CHILDSTATUS} {result retopts} {
lassign [dict get $retopts -errorcode] class pid retcode
set returnvalue $retcode
}