c - 什么样的错误popen记录

标签 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);

最佳答案

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

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

请注意,这将混合 stdoutstderr。因此,如果这很重要,则无法区分输出和错误。

关于c - 什么样的错误popen记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015104/

相关文章:

c - 服务器/客户端 c 程序错误 : "Connect: socket operation on non-socket"

c - 用文本文件中的数据填充数组

c - 算法 : Unimodal Streak

同时计算来自多个客户端的数据

c - 当无法执行管道时如何在 Linux 上创建自解压可执行文件

c - 是否可以在调用函数之前分配一个函数指针?

c - TCP 连接错误 115 Operation in Progress 是什么原因?

c - 如何从控制台读取未知数量的整数?

c - Raspberry Pi - 通过 PCF8574 IOExpander 连接基于 HD44780 的 20x4 LCD

c - 用 C 代码翻转图像