dram.me

关于Tcl的exec和Tcl_OpenCommandChannel

Tcl的execTcl_OpenCommandChannel可以实现系统命令调用,并且功能丰富,包括输入输出重定向、管道等。

但其中存在一个非常严重的问题:特殊字符><|等不能作为命令参数传入,具体可以查看TIP 424中的说明。

因为TIP 424还没有整合,所以当前没有解决的方案。临时的处理,一是做输入检查,或者是结合xargs使用(xargs中使用-0参数比较方便,但这个参数没有标准化)。也可以调用sh -c将命令整体传入。