我正试图用来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也是可以接受的.)