我正在尝试运行脚本并在控制台中输出结果。它有效,但有一个
我现在面临的一个小问题。如果“脚本”文件被写入/编码错误,我得到的输出类似于:
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 ++中的代码
答案 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。