A quanto pare, il comando non fa altro che controllare la cartella proc, per cui non servirebbe neanche controllare le task_struct.
Da user space non puoi accedere alla memoria kernel space.
Una possibile implementazione consiste quindi nel vedere quali cartelle associate a processi esistono in proc e poi, eventualmente, recuparare da ogni cartella le informazioni che servono. A dire il vero non so esattamente quali funzioni esistono per navigare nel filesystem in un programma C/C++.
Esistono anche le funzioni per accedere al proc fylesystem. Ma parliamo sempre di kernel space. Una corretta implementazione di fopen, read, fread, write e fwrite o fprintf dovrebbe, (credo), essere sufficiente. :master:
Se guardi all'interno di /proc vedrai tante cartelle nominate con un numero. bene, quel numero é un pid.. Se navighi all'interno di quelle cartelle avrai accesso alle informazioni dei processi.