首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么"exec“会在这段代码中给出”异常退出的子节点“?

为什么"exec“会在这段代码中给出”异常退出的子节点“?
EN

Stack Overflow用户
提问于 2011-07-01 04:06:04
回答 2查看 10.4K关注 0票数 2

我在tcl中运行这段代码:

代码语言:javascript
复制
set version [exec grep "INTERNAL VERSION:" mojave.log | sed -n -e "s/INTERNAL VERSION: //g" > xor.diff]

set p [exec diff ../log.warning.diff ../log.warning.gold >> xor.diff ]

对于最后一行,它在做了一些比较之后给出了以下错误:-

代码语言:javascript
复制
> RULE-311 WARNING: Gdsii layer number 85 datatype 0 has already been defined
> TCL-11   WARNING: Command "check quartz drc" is overridden, Quality Of
> TCL-11   WARNING: Command "delete marker quartz" is overridden, Quality Of
> TCL-11   WARNING: Command "import marker quartz" is overridden, Quality Of
> TCL-11   WARNING: Command "mojave! run filter log" is overridden, Quality Of
> TCL-11   WARNING: Command "run quartz gui" is overridden, Quality Of Results
> TCL-11   WARNING: Command "ui! mojave draw rectangle" is overridden, Quality
> TCL-11   WARNING: Command "ui! mojave set_context" is overridden, Quality Of
> TCL-12   WARNING: Overridden command "mojave! run filter log" is used,
child process exited abnormally
     while executing
"exec diff ../log.warning.diff ../log.warning.gold 2> xor.diff "
     invoked from within
"set p [exec diff ../log.warning.diff ../log.warning.gold 2> xor.diff ]"
     (file "test.tcl" line 4)
     invoked from within
"source test.tcl"

并且它没有在"xor.diff“文件中写入任何内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-01 06:40:23

如果命令返回非零,或者如果它向stderr发送任何内容,则exec将返回错误。在http://wiki.tcl.tk/exec上有一个关于结合使用catchexec的非常深入的讨论

票数 4
EN

Stack Overflow用户

发布于 2011-07-01 04:12:43

如果发现任何差异,diff (和comm)将退出非零值,因此您可以重定向输出以使用它们,如“to this change?”测试。对于Tcl,你需要使用`|| :‘习惯用法来忽略退出状态。

附言:“grep的无用用法”...sed -n -e '/INTERNAL VERSION: /s//gp'

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6540470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档