[英]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.