2016-07-08 2 views
2

Я относительно новичок в ncurses и просто задавался вопросом, каким будет простой способ отображения вывода команды, выполняемой в терминале/командной строке в ncurses TUI, что я начинаю. то есть что-то вроде этого psuedocode (который я знаю, не работает, просто чтобы получить точку accross :) Цель состоит в том, чтобы представить экран меню, отображающий различную информацию о системе, как доступная память, сетевой информация, и т.д.:ncurses и C- Отображение вывода команды «df» в окне ncurses

#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

Хм, я вижу. Это, по сути, то, что я искал благодаря! Есть ли способ контролировать, что напечатано из трубы? I.Вы печатаете только первые несколько символов? – Broncos423

+0

Я использовал 'addstr', потому что он был быстрым (и не требовал работы, чтобы обрезать новые строки из трубы). Вы можете использовать 'addnstr' или' printw' для печати всего нескольких символов. –