输出失败

时间:2012-12-26 14:58:49

标签: c++ c

我正在尝试运行脚本并在控制台中输出结果。它有效,但有一个

我现在面临的一个小问题。如果“脚本”文件被写入/编码错误,我得到的输出类似于:

 syntax error, unexpected $undefined, expecting $end puts

这非常好,它告诉我脚本文件中的代码有问题,但在我的代码行中:

printf("%s", path);

它打印出来给我,我希望它打印出来,这样我就可以在屏幕上显示它。请帮帮我

 fp = popen("our script...is here", "r");
    if (fp == NULL)
        /* Handle error */;


    while (fgets(path, PATH_MAX, fp) != NULL)
        printf("%s", path);


    status = pclose(fp);

Ps:只是为了让我更清楚我正在使用xcode并且不介意C或C ++中的代码

2 个答案:

答案 0 :(得分:1)

你必须关心stderr - popen()只处理stdout:

  

相反,从“popened”流中读取命令的标准输出

shell错误将打印到stderr - popen()无法处理。

答案 1 :(得分:1)

默认情况下,fgets()仅从流的stdout读取。要捕获stderr,您只需将其重定向到stdout

即可
 fp = popen("./script 2>&1", "r");

现在stdout和stderr都会转到你的C代码可以读取的stdout。

请注意,如果您已按上述方式重定向,则无法区分stdout和stderr。