linux c/c++:获取ifconfig wlan0 up输出



我正在尝试运行命令ifconfig wlan0 up,并通过以下方式获得该命令的结果:

std::string exec(char* cmd)
{
 FILE* pipe = popen(cmd, "r");
 if (!pipe) return "ERROR";
 char buffer[128];
 std::string result = "";
 while(!feof(pipe)  ) 
 {
    if(fgets(buffer, 128, pipe) != NULL)
        result += buffer;
 }
 pclose(pipe);
 return result;
}

但是,当使用ifconfig wlan0 up调用上述函数时,它会返回空结果(尽管命令成功)。

预期结果(从命令提示符运行时):

[   68.126342] wl12xx: state: 0
[   68.683715] wl12xx: firmware booted (Rev 6.3.10.0.135)

有什么想法吗?谢谢

ifconfig up在成功时不产生输出。

您在控制台中看到的消息(wl12xx:固件启动)是来自内核的日志消息,看起来您的系统已配置为将日志复制到控制台。您可能会在/var/log下的文件中找到相同的消息。

您可以通过将输出重定向到一个文件(例如)来确认消息不是来自ifconfig

ifconfig wlan0 up 2>&1 >/tmp/output
popen()函数在调用程序和要执行的命令之间创建一个管道。在您的程序片段中看不到任何问题。检查您执行的命令是否真的产生了任何要显示的输出。还要检查缓冲区的大小是否足够。

最新更新