我写了一个C ++演示test.cpp
,如:
int main()
{
int num = 1 / 0;
}
然后编译它
$ g++ test.cpp -o test
然后在shell中运行它:
$ ./test 2>error.txt
我希望将错误消息重定向到error.txt,但它们仍然会通过stdout在屏幕上打印。为什么会这样?
输出显示如下:
Floating point exception (core dumped)
答案 0 :(得分:3)
因为程序生成的错误消息不。它由操作系统生成。
想想:该计划已经死亡。它如何产生额外的输出?
事实上,即使您将程序的 stdout和stderr 重定向到/dev/null
,您也会观察输出。
如果您创建子shell并重定向其stderr,您将看到重定向的错误消息:
( ./test ) 2>error.txt