小编Liz*_*Liu的帖子

如何将可执行 C 程序的错误信息重定向到标准输出?(MAC OS X)

我想编写一个自动 C 程序检查器。例如,我有一个玩具“hello.c”程序:

#include <stdio.h>

int main()
{
    int a, b;

    while (scanf("%d %d", (&a)-1000000000000000, &b) != EOF)
    {
        printf("%d\n", a+b);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的输入文件“1.in”:

1 2
4 5
10 10
2 2
3 2
7 4
Run Code Online (Sandbox Code Playgroud)

和输出文件“1.out”:

3
9
20
4
5
11
Run Code Online (Sandbox Code Playgroud)

我使用“gcc hello.c -o hello.o”来编译并生成一个可执行程序“hello.o”。很明显,程序会遇到“段错误”:(在我的MAC OS X中运行)

$ ./hello.o <1.in
Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud)

但我想使用管道和差异制作一个自动检查器:

./hello.o <1.in | diff - 1.out
Run Code Online (Sandbox Code Playgroud)

输出是:

0a1,6
> 3
> 9
> 20
> 4
> 5
> 11
Run Code Online (Sandbox Code Playgroud)

没有错误信息显示!但我想在终端(MAC OS …

osx bash c pipe io-redirection

5
推荐指数
2
解决办法
1838
查看次数

标签 统计

bash ×1

c ×1

io-redirection ×1

osx ×1

pipe ×1