tcl catch解决调用gcc编译代码莫名崩掉的问题

在工作中, 遇到一个奇怪的问题:  在terminal, gcc 编译一些代码可以通过, echo $? 回显0, 但将gcc编译命令用包装到tcl脚本后,运行却崩掉了.  一直以为代码有问题, 做完代码精简,才发现tcl对gcc编译子过程的调用有问题. 实在没琢磨透为什么, 只能在tcl脚本中加入catch 捕捉异常,然后解析gcc的编译报告,再决定是否报错.

---------------------------------
$ gcc -c test.cpp
test.cpp:3:54: note: ...
    ("i tell you something are not right")
                                         ^
$ echo $?
0
--------------------------------

 

包装到tcl脚本后:

--------------------------------------------------

$ cat c.tcl
exec /usr/bin/gcc -c test.cpp 
  
$ tclsh c.tcl
test.cpp:3:54: note: 
    ("i tell you something are not right")
                                         ^
    while executing
"exec /usr/bin/gcc -c test.cpp  "
    (file "c.tcl" line 1)
$ echo $?
1
------------------------------------------------

解决办法:

将c.tcl 中做以下修改:

 1.  catch {exec /usr/bin/gcc -c ts.cpp | tee gcc.log} r

 2. 解析gcc.log然后解析内容输出. 当然, 在上一句可以将gcc编译输出重定向到屏幕输出, 这里只做判断是否终止的工作.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值