// 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);
}