我正在尝试在 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);
最佳答案
popen()
将 FILE*
返回到您运行的命令的 stdout
。所以,如果你想阅读 stderr
(看起来你运行的命令给出了转到 stderr 的错误),那么
你可以将 stderr 重定向到 stdout:
FILE* lsofFile_p = popen("c:\\adb tcpip 5555 2>&1" ,"r");
请注意,这将混合 stdout
和 stderr
。因此,如果这很重要,则无法区分输出和错误。
关于c - 什么样的错误popen记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015104/