Ik zit met het volgende probleem:
Ik probeer een programma te bouwen wat de output van 'ps aux' leest en in een menuutje stopt zodat je makkelijk met de pijltjes toetsen een proces kan selecteren en kan killen. Het programma wordt aangeroepen dmv van een pipeline, dus: 'ps aux|menu' zou ons programma menu moeten opstarten, die vervolgens de output van 'ps aux' van stdin leest en verwerkt.
Tot zo ver alles prima, ik krijg netjes een lijstje van de processen die er draaien. Alleen bij het selecteren gaat het fout, het programma leest om de een of andere reden geen input van het keyboard.
Hieronder me source:
Omdat ik gebruik maak van de curses lib moet je het programma zo compilen:
$ gcc menu.c -o menu -lcurses
Wie de fout ziet mag het zeggen
PS: Het programma is nog een beetje brak enzo, maar het is nog in full development dus daarom.
Ik probeer een programma te bouwen wat de output van 'ps aux' leest en in een menuutje stopt zodat je makkelijk met de pijltjes toetsen een proces kan selecteren en kan killen. Het programma wordt aangeroepen dmv van een pipeline, dus: 'ps aux|menu' zou ons programma menu moeten opstarten, die vervolgens de output van 'ps aux' van stdin leest en verwerkt.
Tot zo ver alles prima, ik krijg netjes een lijstje van de processen die er draaien. Alleen bij het selecteren gaat het fout, het programma leest om de een of andere reden geen input van het keyboard.
Hieronder me source:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| #include <stdio.h>
#include <curses.h>
char psoutput[100][250];
int ppos=1;
WINDOW *mainwin;
int showmenu() {
int i;
for (i = 0; i < 30; i++)
mvwprintw(mainwin, i, 0, " %s", psoutput[i]);
mvwprintw(mainwin, ppos, 0, "*");
refresh();
return 0;
}
int main() {
int i=0, key;
while (fgets(psoutput[i], 250, stdin) && i < 100)
i++;
mainwin = initscr();
keypad(mainwin, TRUE);
noecho();
showmenu();
while (1) {
key = wgetch(mainwin);
mvwprintw(mainwin, 32, 0, "%d", key);
if (key == KEY_DOWN)
ppos++;
else if (key == KEY_UP)
ppos--;
showmenu();
}
delwin(mainwin);
endwin();
} |
Omdat ik gebruik maak van de curses lib moet je het programma zo compilen:
$ gcc menu.c -o menu -lcurses
Wie de fout ziet mag het zeggen
PS: Het programma is nog een beetje brak enzo, maar het is nog in full development dus daarom.
[ Voor 7% gewijzigd door Verwijderd op 05-01-2003 22:53 ]