我正在尝试在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);
答案 0 :(得分:5)
popen()
会将FILE*
返回到您运行的命令的stdout
。所以,如果你想阅读stderr
(看起来你运行的命令会给stderr带来错误),那么
你可以将stderr重定向到stdout:
FILE* lsofFile_p = popen("c:\\adb tcpip 5555 2>&1" ,"r");
请注意,这会混合stdout
和stderr
。因此,如果重要的话,就无法区分输出和错误。