有没有方法可以抑制
popen()
的输出,而不失去Wait()的功能。
测试1:
FILE * stream = NULL;
char buffer [120];
stream = popen ("ffmpeg -y -i test.amr -ar 16000 test.wav -v quiet", "r");
while (fgets (buffer, sizeof(buffer), stream))
{
}
pclose (stream);
测试2:
FILE * stream = NULL;
char buffer [120];
stream = popen ("ffmpeg -y -i test.amr -ar 16000 test.wav -v quiet &> /dev/null", "r");
while (fgets (buffer, sizeof(buffer), stream))
{
}
pclose (stream);
Test 2的问题在于pclose()
没有等待管道处理完成。我不想每次进行管道操作时都看到大量的FFMPEG输出。
ffmpeg
是否因某些原因正在写入stderr
?你可以尝试使用ffmpeg ... 2> /dev/null
吗? - cnicutar2>
解决了这个问题! - user548266&>
重定向 标准输出 和 标准错误。要仅重定向标准输出,请使用>
或1>
;要仅重定向标准错误,请使用2>
,如 cnicutar 建议的那样。 - ruakh>/dev/null 2>&1
。 - R.. GitHub STOP HELPING ICE