2016-07-08 48 views
2

我對ncurses比較新,只是想知道什麼纔是簡單的方法來顯示在終端/命令行中執行的命令的輸出在ncurses TUI,我開始。即是這樣的僞代碼(我知道有沒有用,只是爲了獲得點翻過:)我們的目標是提供一個菜單屏幕顯示像可用內存,網絡信息等各種系統信息:ncurses和C-在ncurses窗口顯示'df'命令的輸出

#include <ncurses.h> 
#include <stdlib.h> 
#include <stdio.h> 


int main(){ 

initscr(); 
cbreak(); 
char command[] = "df"; 
printw(system(command)); 
} 

回答

2

您可以通過打開管道來執行此操作(順便說一下,示例應使用"df")。像這樣:

#include <ncurses.h> 
#include <stdlib.h> 
#include <stdio.h> 

int 
main(void) 
{ 
    FILE *pp; 

    initscr(); 
    cbreak(); 
    if ((pp = popen("df", "r")) != 0) { 
     char buffer[BUFSIZ]; 
     while (fgets(buffer, sizeof(buffer), pp) != 0) { 
      addstr(buffer); 
     } 
     pclose(pp); 
    } 
    getch(); 
    return EXIT_SUCCESS; 
} 
+0

嗯我明白了。這實際上是我在尋找的感謝!有沒有辦法控制從管道上打印什麼?我只打印前幾個字符? – Broncos423

+0

我使用'addstr'是因爲它很快(並且不需要從管道修剪換行符)。你可以用'addnstr'或'printw'來打印幾個字符。 –