2014-10-07 19 views
1

我試圖運行命令ifconfig wlan0 up並通過以下方式獲得此命令的結果:Linux下C/C++:獲取使用ifconfig爲wlan0了輸出

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) 

任何想法? 謝謝!

+1

是不是想要的結果? AFAIK它不會在工作時發出喋喋不休的聲音。 – 2014-10-07 11:15:35

+0

是否將結果寫入ifconfig的標準輸出? – whoan 2014-10-07 11:36:15

回答

3

ifconfig up成功時不產生輸出。

您在控制檯中看到這些消息(wl12xx:固件引導)從內核日誌消息,它看起來像你的系統配置將日誌複製到控制檯。您可能會在/var/log下的文件中找到相同的消息。

可以確認該消息不會通過重定向輸出到文件來自使用ifconfig,例如

ifconfig wlan0 up 2>&1 >/tmp/output 
0

popen()函數在調用程序和要執行的命令之間創建一個管道。在您的程序片段中看不到任何問題。檢查你執行的命令是否真的產生了任何要顯示的輸出。同時檢查你的緩衝區是否大小適中。