C运行外部程序获取错误

时间:2018-02-22 08:26:19

标签: c system

在我的C代码中,我想运行一个外部程序。 为此,我使用system()函数,如下例所示:

system("/bin/myprog");

但我想检测外部程序是否有错误或无法正确退出。 我怎样才能收到错误?

2 个答案:

答案 0 :(得分:1)

如果要获取错误消息,则需要从外部程序中捕获stderr。请注意popen陷阱stdout,因此您需要使用shell构造重定向2>&1(幸运的是popen也运行shell)。例如:

#define BUFF_SIZE 1024

int main()
{
    char buffer[BUFF_SIZE];

    FILE *p = popen("/bin/myprog 2>&1", "r");

    while (fgets(buffer, BUFF_SIZE, p))
        printf("Recieved: %s\n", buffer);

    return 0;
}

编辑:要忽略stdout条消息并仅获取stderr条消息,请使用:

FILE *p = popen("/bin/myprog 2>&1 1>/dev/null", "r");

答案 1 :(得分:0)

使用popen,这样你就可以阅读输出信息了。 popen man3