// INFORMACION DEL PROCESO /* CODIGO COPIADO DE https://poesiabinaria.net/2017/07/obtener-informacion-basica-procesos-del-sistema-linux-c-c-parte-3/ */ #include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { if (argc<2) return perror("Falta un argumento"), 1; char statFileName[128]; /* /proc/PIC/stat - I think 512 bytes is far enough */ sprintf(statFileName, "/proc/%s/stat", argv[1]); FILE *fd = fopen(statFileName, "r"); if (fd == NULL) return perror("No puedo encontrar el proceso especificado"),1; char state, name[32]; int pid, ppid, pgrp, session, tty, tpgid, nlwp; unsigned long flags, min_flt, cmin_flt, maj_flt, cmaj_flt, vsize, rsslim; unsigned long long utime, stime, cutime, cstime, start_time; long priority, nice, alarm, rss, startcode, endcode; fscanf(fd, "%d %s " "%c " "%d %d %d %d %d " "%lu %lu %lu %lu %lu " "%Lu %Lu %Lu %Lu " "%ld %ld " "%d " "%ld " "%Lu " "%lu " "%ld" "%lu" "%ld" "%ld", &pid, name, &state, &ppid, &pgrp, &session, &tty, &tpgid, &flags, &min_flt, &cmin_flt, &maj_flt, &cmaj_flt, &utime, &stime, &cutime, &cstime, &priority, &nice, &nlwp, &alarm, &start_time, &vsize, &rss, &rsslim, &startcode, &endcode); fclose(fd); printf ("PID: %d\n" "CMD: %s\n" "Estado: %c\n" "PPID: %d\n" "INICIO: %ld\n" "FIN: %ld\n", pid, name, state, ppid, startcode, endcode); }