utmp w
-
guten morgen erst mal. Hoffe ihr habt alle gut geschlafen.
Also ich hab folgende schleife:
while(u = getutent()) { if(u == USER_PROCESS) { printf("%s", u->ut->user) printf("%s", u->ut_line) printf("%s", u->ut_host) } }
und würde die gern erweitern um die Ausgabe, was der jeweilige user gerade macht, also so wie bei w die letzte Spalte (nicht nur das der user n terminal auf hat, sondern was der darauf macht) aber mit dem Quellcode von W
werd ich grad net glücklich. Und einfach nur abschreiben macht mer net.
Wer super nett wenns mir einer von euch erklären würd.
-
So schwer ist doch der Quellcode von w.c nicht zu verstehen. Die Version von w.c sind ja grade mal so 9KB.
http://ghi.slacker.se/linux/src/procps-010114/w.c
... viele viele includierte Header ... /***** showinfo */ static void showinfo(utmp_t *u, int formtype, int maxcmd, int from) { proc_t *best; ... best = getproc(u, tty + 5, &jcpu, &ut_pid_found); ... if (best) { if (best->cmdline) print_strlist(stdout, best->cmdline, " ", maxcmd); else printf("%*.*s", -maxcmd, maxcmd, best->cmd); } else { printf("-"); } fputc('\n', stdout); } int main() { char* user = NULL; utmp_t* u; int longform=1; int maxcmd=80; int from=1; ... while( (u=getutent()) ) { if (u->ut_type == USER_PROCESS && (user ? !strncmp(u->ut_user, user, USERSZ) : *u->ut_user)) { showinfo(u, longform, maxcmd, from); } } showinfo(u, longform, maxcmd, from); ... return 0; }
-
Ja den hab ich auch, aber des müsst doch einfacher gehen. weil verfolg mal alle vars zurück wo die gefüllt werden. Mega aufwand.
-
Der Quellcode zu "w" ist ja FreeSoftware und wenn es einfacher/eleganter gelöst hätte werden können, wäre es sicher in der Zwischenzeit von jemandem auch schon entsprechend (um-)programmiert worden.
-
Jo 1:0 für dich trotzdem danke.