Devi analizzare i dati da /proc/<PID>/stat . Questi sono i primi campi (da Documentation/filesystems/proc.txt nel sorgente del kernel):
Table 1-3: Contents of the stat files (as of 2.6.22-rc3)
..............................................................................
 Field          Content
  pid           process id
  tcomm         filename of the executable
  state         state (R is running, S is sleeping, D is sleeping in an
                uninterruptible wait, Z is zombie, T is traced or stopped)
  ppid          process id of the parent process
  pgrp          pgrp of the process
  sid           session id
  tty_nr        tty the process uses
  tty_pgrp      pgrp of the tty
  flags         task flags
  min_flt       number of minor faults
  cmin_flt      number of minor faults with child's
  maj_flt       number of major faults
  cmaj_flt      number of major faults with child's
  utime         user mode jiffies
  stime         kernel mode jiffies
  cutime        user mode jiffies with child's
  cstime        kernel mode jiffies with child's
 
 Probabilmente stai cercando utime e/o stime . Dovrai anche leggere il cpu riga da /proc/stat , che assomiglia a:
cpu  192369 7119 480152 122044337 14142 9937 26747 0 0
 
 Questo ti dice il tempo cumulativo della CPU che è stato utilizzato in varie categorie, in unità di jiffies. Devi prendere la somma dei valori su questa riga per ottenere un time_total misura.
 Leggi entrambi utime e stime per il processo che ti interessa e leggi time_total da /proc/stat . Quindi dormi per un secondo o giù di lì e rileggili tutti di nuovo. Ora puoi calcolare l'utilizzo della CPU del processo durante il tempo di campionamento, con:
user_util = 100 * (utime_after - utime_before) / (time_total_after - time_total_before);
sys_util = 100 * (stime_after - stime_before) / (time_total_after - time_total_before);
 Ha senso?
getrusage() può aiutarti a determinare l'utilizzo del processo corrente o del suo figlio
Aggiornamento: Non ricordo un'API. Ma tutti i dettagli saranno in /proc/PID /stat, quindi se potessimo analizzarlo, potremmo ottenere la percentuale.
MODIFICA: Poiché la percentuale di CPU non è semplice da calcolare, è possibile utilizzare il campionamento di cose qui. Leggi ctime e utime per un PID in un determinato momento e rileggi gli stessi valori dopo 1 sec. Trova la differenza e dividi per cento. Otterrai l'utilizzo per quel processo per oltre un secondo.
(potrebbe diventare più complesso se ci sono molti processori)