为什么在Shell输出中运行的可执行操作到stdout,而不是崩溃时的stderr
Why an executable running in shell output to stdout instead of stderr when crashes?
我写了C 演示test.cpp
喜欢:
int main()
{
int num = 1 / 0;
}
然后编译
$ g++ test.cpp -o test
然后在外壳中运行:
$ ./test 2>error.txt
我希望将错误消息重定向到error.txt,但它们仍然通过Stdout在屏幕上打印。为什么发生这种情况?
输出如下所示:
Floating point exception (core dumped)
因为错误消息是不是程序生成的。它由操作系统生成。
思考:该计划已经死亡。它如何产生额外的输出?
实际上,即使您重定向 stdout和stderr /dev/null
。
如果您创建一个子壳并将其stderr重定向,则会看到错误消息重定向:
( ./test ) 2>error.txt
相关文章:
- 如何将stdout重定向到stderr
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- 试图创建流或fopen时程序崩溃
- 类对象数组的问题会导致崩溃
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 为什么要增加导致崩溃的指针
- 在虚幻引擎中删除NXOpen对象时崩溃
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 为什么在Shell输出中运行的可执行操作到stdout,而不是崩溃时的stderr
- 当STDERR重定向到管道时,为什么BOOST ::流程在Windows上崩溃