--- projects/libstatgrab/src/libstatgrab/process_stats.c 2004/04/07 10:33:50 1.61 +++ projects/libstatgrab/src/libstatgrab/process_stats.c 2004/04/07 14:45:33 1.62 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * - * $Id: process_stats.c,v 1.61 2004/04/07 10:33:50 ats Exp $ + * $Id: process_stats.c,v 1.62 2004/04/07 14:45:33 pajs Exp $ */ #ifdef HAVE_CONFIG_H @@ -213,9 +213,30 @@ sg_process_stats *sg_get_process_stats(int *entries){ /* cpu */ proc_state_ptr->cpu_percent = (100.0 * (utime + stime)) / ((uptime * 100.0) - starttime); - printf("%s ut: %lu st: %lu up: %lu start: %lu\n", proc_state_ptr->process_name, utime, stime, uptime , starttime); fclose(f); + + /* uid / gid */ + snprintf(filename, MAX_FILE_LENGTH, "/proc/%s/status", dir_entry->d_name); + if ((f=fopen(filename, "r")) == NULL) { + /* Open failed.. Process since vanished, or the path was too long. + * Ah well, move onwards to the next one */ + continue; + } + + if((ptr=sg_f_read_line(f, "Uid:"))==NULL){ + fclose(f); + continue; + } + sscanf(ptr, "Uid:\t%d\t%d\t%*d\t%*d\n", &(proc_state_ptr->uid), &(proc_state_ptr->euid)); + + if((ptr=sg_f_read_line(f, "Gid:"))==NULL){ + fclose(f); + continue; + } + sscanf(ptr, "Gid:\t%d\t%d\t%*d\t%*d\n", &(proc_state_ptr->gid), &(proc_state_ptr->egid)); + + fclose(f); /* proctitle */ snprintf(filename, MAX_FILE_LENGTH, "/proc/%s/cmdline", dir_entry->d_name);