小编Kir*_*sky的帖子

有没有一种方法可以将stderr重定向到可以在bash,csh和dash中工作的文件?

如何重定向stderr(或stdout+ stderr)到一个文件,如果我不知道是哪个壳(bashcshdash)是解释我的命令?

我在Linux / FreeBSD / OSX上运行的C代码需要通过system()函数调用外部程序,该函数将用于/bin/sh解释提供的命令行。我想捕获该外部程序打印到的消息stderr,并将其保存到文件中。问题在于,在不同的系统上/bin/sh指向具有不同语法的不同shell,这些语法用于将stderr流重定向到文件。

我发现的最接近的东西是bash实际上了解cshstderr+ 重定向stdout到文件的-style语法:

some_program >& output.txt
Run Code Online (Sandbox Code Playgroud)

但是dash,这是Ubuntu上的默认外壳程序(即非常常见),无法理解该语法。

是否有stderr所有通用shell都能正确解释的重定向语法?或者,有没有办法告诉system()(或其他一些类似的C函数)使用/usr/bin/env bash而不是/bin/sh解释所提供的命令行?

c bash csh

4
推荐指数
1
解决办法
116
查看次数

标签 统计

bash ×1

c ×1

csh ×1