PDA

View Full Version : [C] Conoscere il pid di un processo.


>|HaRRyFocKer|
19-05-2008, 15:32
Salve ragazzi, sto apprestandomi a studiare i segnali in C. Ora volevo, giusto per esercitarmi, fare qualche programmino per capire il reale utilizzo dei segnali, e volevo fare na cosa stupidina che mandava un segnale di abort (o cmq un segnale di interruzione) ad un processo.
Ora, però, a quanto ho capito, per inviare un segnale ad un altro processo ho bisogno del suo pid... Come faccio a saperlo?
Se eseguissi questo processo direttamente dal mio programma, poi saperlo con getpid, come faccio a sapere il pid di un processo già in esecuzione? Per esempio, come faccio a sapere il pid di gdm?

Grazie a chi mi risponderà :)

ilsensine
19-05-2008, 16:31
come faccio a sapere il pid di un processo già in esecuzione? Per esempio, come faccio a sapere il pid di gdm?

Per motivi che non ti sto a spiegare qui, non è banale: devi scorrerti tutti i pid in /proc, esaminando i symlink /proc/<pid>/exe fino a trovare la (o le) istanze del processo che stai cercando.

>|HaRRyFocKer|
19-05-2008, 17:45
Per motivi che non ti sto a spiegare qui, non è banale: devi scorrerti tutti i pid in /proc, esaminando i symlink /proc/<pid>/exe fino a trovare la (o le) istanze del processo che stai cercando.

Sti enormiegargantueschicazzi!
Vabbè, allora lascio stare :O

Mi esercito su altro...

Unrue
19-05-2008, 21:56
Per motivi che non ti sto a spiegare qui, non è banale: devi scorrerti tutti i pid in /proc, esaminando i symlink /proc/<pid>/exe fino a trovare la (o le) istanze del processo che stai cercando.

Non può semplicemente fare un "top" da C, ed estrarre il nome e PID del processo che gli interessa facendo un pò di text processing?

ilsensine
20-05-2008, 09:14
Non può semplicemente fare un "top" da C, ed estrarre il nome e PID del processo che gli interessa facendo un pò di text processing?
Sì anche. Top fa la stessa cosa (spulcia tutti i pid in proc). Oppure, ps aux.

sirus
20-05-2008, 14:09
Sì anche. Top fa la stessa cosa (spulcia tutti i pid in proc). Oppure, ps aux.
Meglio ps -aux secondo me, l'output è più semplice da parsare. :p