c popen不会抓住stderr

poy*_*poy 22 c popen stderr

我正试图用来popen()捕捉一个电话的stderr,但当然它似乎并没有这样做.有任何想法吗?

我的代码看起来或多或少像这样:

popen("nedit", "r");
Run Code Online (Sandbox Code Playgroud)

但是我在屏幕上得到了关于非utf8的所有垃圾......

Fre*_*Foo 36

popen为进程'stdout提供文件句柄,而不是stderr.它的第一个参数被解释为shell命令,因此你可以在其中进行重定向:

FILE *p = popen("prog 2>&1", "r");
Run Code Online (Sandbox Code Playgroud)

或者,如果你根本不想要stdout,

FILE *p = popen("prog 2>&1 >/dev/null", "r");
Run Code Online (Sandbox Code Playgroud)

(除此之外的任何其他文件/dev/null也是可以接受的.)


qbe*_*220 5

如果你想放弃所有的错误消息,那么你可以使用:

popen("nedit 2>/dev/null", "r");
Run Code Online (Sandbox Code Playgroud)