popen记录了什么样的错误

时间:2016-08-18 09:52:12

标签: c

我正在尝试在cmd中执行命令"adb tcpip 5555"并获取输出以在另一个语句中使用它。

此adb代码应该为error: no devices/emulators found但缓冲区仍为空。

FILE* lsofFile_p = popen("c:\\adb tcpip 5555" ,"r");
char* line_p = fgets(buffer, sizeof(buffer), lsofFile_p);
printf("\n***\nbuffer = %s***\n\n", buffer);
pclose(lsofFile_p);
printf("\n***\nbuffer = %s***\n\n", buffer);

1 个答案:

答案 0 :(得分:5)

popen()会将FILE*返回到您运行的命令的stdout。所以,如果你想阅读stderr(看起来你运行的命令会给stderr带来错误),那么 你可以将stderr重定向到stdout:

FILE* lsofFile_p = popen("c:\\adb tcpip 5555 2>&1" ,"r");

请注意,这会混合stdoutstderr。因此,如果重要的话,就无法区分输出和错误。