繁体   English   中英

C运行外部程序获取错误

[英]C run external program get error

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

system("/bin/myprog");

但是我想检测我的外部程序是否有错误或不能正确退出。 我如何得到该错误?

如果要获取错误消息,则需要从外部程序捕获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");

使用popen,因此您可以阅读输出消息。 popen man3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM