返回失败的输出

get failed output back

本文关键字:输出 失败 返回      更新时间:2023-10-16

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

我现在面临的是一个小问题。如果"脚本"文件写错了,我得到的输出类似于:
 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++

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

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

现在标准输出和标准错误都将变为标准输出,您的C代码可以从中读取。

注意,一旦像上面那样重定向,就没有办法区分标准输出和标准错误了。

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

相反,从"已打开"流读取命令的标准输出

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