2016-07-08 9 views
2

Ich bin relativ neu zu Ncurses und war nur gefragt, was wäre die einfache Möglichkeit, die Ausgabe eines Befehls in Terminal/die Befehlszeile in der Ncurses ausgeführt anzuzeigen TUI, dass ich anfange. also so etwas wie dieses psuedocode (was ich nicht weiß, arbeiten, nur um den Punkt accross :) Das Ziel ist es, ein Menübildschirm angezeigt werden verschiedene Systeminformationen wie verfügbarer Speicher, Netzwerk-Informationen zu präsentieren, etc:ncurses und C- Display-Ausgabe von 'df' Befehl in Ncurses-Fenster

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


int main(){ 

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

Antwort

2

Sie können dies tun, indem Sie eine Pipe zu dem Befehl öffnen (das Beispiel sollte übrigens "df" verwenden). Etwas wie dieses:

#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

Hmm ich sehe. Dies ist im Wesentlichen, was ich suchte, danke! Gibt es eine Möglichkeit zu kontrollieren, was aus der Pipe gedruckt wird? Ich drucke nur die ersten paar Zeichen? – Broncos423

+0

Ich habe 'addtr' verwendet, weil es schnell war (und keine Arbeit brauchte, um die Zeilenumbrüche aus der Pipe zu schneiden). Sie könnten 'addnstr' oder' printw' verwenden, um nur ein paar Zeichen zu drucken. –