在我的C
代码中,我想运行一个外部程序。
为此,我使用system()
函数,如下例所示:
system("/bin/myprog");
但我想检测外部程序是否有错误或无法正确退出。 我怎样才能收到错误?
答案 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