我试图"adb tcpip 5555"在cmd中执行命令并获取输出以在另一个语句中使用它.
此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);
Run Code Online (Sandbox Code Playgroud)
popen()返回FILE*到stdout您运行的命令.所以,如果你想阅读stderr(看起来你运行的命令会给stderr带来错误),那么你可以将stderr重定向到stdout:
FILE* lsofFile_p = popen("c:\\adb tcpip 5555 2>&1" ,"r");
Run Code Online (Sandbox Code Playgroud)
请注意,这将混合stdout和stderr.因此,如果重要的是,没有办法区分输出和错误.