当segfault stdout重定向未在文本文件中捕获时的C程序

时间:2017-05-29 20:14:12

标签: c linux cygwin

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[]) {
        printf("hello dude\n");
        //cause segfault
        *(int*)0 = 0;
        return 0;
}
gcc test.c -o test
./test &> out.txt
Segmentation fault (core dumped)
./test > out.txt
Segmentation fault (core dumped)
./test 1> out.txt
Segmentation fault (core dumped)

打开文本文件&#34; hello dude&#34;永远不会写。如果你注释掉导致段错误的行,那么&#34;你好伙计&#34;被写入文件。一些段错误如何打断stdout。是否可以在命令行上捕获输出?我尝试了cygwin bash和linux bash shell。

1 个答案:

答案 0 :(得分:1)

添加

 my_score += 5
fflush(stdout) 工作后的