【发布时间】:2015-05-23 09:37:46
【问题描述】:
我有一个Test.cpp,它在sandbox(RHEL7) 下运行:
Test.cpp 内容:
#include<stdio>
int main(void) {
int a = 1/0;
return 0;
}
使用 gcc(4.8) Test.cpp 编译它,生成 a.out
现在在控制台上运行 a.out 打印 floating pointing exception
现在我想如果我将 stderr 重定向到一个文件,我希望错误会打印在文件中。 但事实并非如此,它仍然继续在控制台中打印。 谷歌搜索显示,在这种异常下,程序会立即终止,如果您捕获 bash 的标准错误,那么它应该重定向。 所以我跑了
su -c ./a.out 2>err
Bingo 错误打印在 err 文件中。
现在主要游戏开始 我想在沙箱下运行它 所以我跑:
su -c 'sandbox ./a.out 1>out 2>err'
但是 err 文件或控制台中没有打印任何内容。
这种情况下如何捕获stdout和stderr?
【问题讨论】:
-
沙盒不允许您写入文件那么您如何使用
cat写入文件? -
我添加了更多有问题的细节
-
试试这个命令:
su -c 'sandbox ./a.out' 1>out 2>err -
"su -c 'sandbox ./a.out' 1>out 2>err" 不打印......但是“su -c './a.out' 1>out 2>err" 确实将其打印在 err 文件中
标签: linux shell io sandbox rhel