Newsgroup: it.comp.os.linux.development
Titolo: ps in C

Salve,
vorrei sapere se è possibile tramite C sapere la lista dei procsessi attivi.
Per essere piòòààùu' preciso vorrei sapere quale window manager e' attivo sul pc in un determinato momento.
In bash facevo un parsing dell'output di "ps a" ma in c come posso fare?
E' consigliato fare una "exec"?
Grazie.

 E' consigliato fare una "exec"?
Se lo fai "una tantum" non e' grave.
Se lo fai ripetitivamente puo' essere pesante.
Alessandro.

 In bash facevo un parsing dell'output di "ps a" ma in c come posso fare?
Dai un'occhiata in /proc/<pid>/cmdline, ad esempio. Se li usano ps e 
top, puoi usarli pure tu. :-)
Senno ci sarebbe libgtop, che e` parte di gtop (il 'top' di Gnome), che 
potrebbe forse fornirti uno strato d'astrazione per far di queste cose.
+++
Peraltro non mi sovviene come tu faccia ad individuare un window manager 
in maniera affidabile, considerato che, per come e` fatto X, ci son i 
casi limite dove ce ne sono N su N display diversi, magari nemmeno come 
processi locali...
-- 
   |   \    \  | ___|_  |_  | ianezz a casa sua... :-)
   |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
  _|_/  _\_|  _|____|___|___| 
http://www.linuxtrent.it

 ha scritto nel messaggio
news:20030410185210.0...@tin.it...
Salve,
vorrei sapere se ט possibile tramite C sapere la lista dei procsessi attivi.
Per essere piעעאאשu' preciso vorrei sapere quale window manager e' attivo


 processi locali...
purtroppo non mi vengono altre idee in mente per adesso visto che non c'è una chiave in gconf o altri metodi...
Grazie a tutti cmq, mi sa che provero ispezionando /proc anche se in questo modo il mio programma funzionerà solo per chi ha un solo display.

Scognito wrote:

Non so la soluzione, ma ti complico il problema :-]
Se sviluppi qualcosa che non sia solo per te, tieni presente che ci sono 
persone che potrebbero avere piu di un windows manager attivo 
contemporaneamente. Io spesso tengo aperto kde su uno screen e gnome , 
windowmaker o un altra sessione di Kde su un altro.
startx -- :0
startx -- :1



arghhhh....
Come ho detto prima allora mi sa che funzionerà solo con chi usa solo un desktop manager alla volta :))
Almeno finche non mi verranno in mente idee più carine.
Per la cronaca sto facendo un programma in gtk che faccia scegliere quale window manager usare in gnome.
Per far cio dovrei "killare" il window manager corrente.
Per sapere qual'è il window manager corrente dovrei fare un ps, e da qui il mio problema.
Se solo ci fosse stata una chiave di gconf tutto sarebbe stato più semplice....
Ciao,
	Scognito.

 E' consigliato fare una "exec"?
Per quanto mi concerne per chiamare funzioni della shelldal codice in ci io
uso normalmente
system("nome comando");
e.g.
system(ls -l)
prova con
system(ps aux);
funzione che poi fa uso delle funzioni exec() e  fork(); vedi man system.
Inoltre dovrebbre essere in libstd.h.
Ciao

 
errata corrige:
ci leggasi C
system(ps aux) leggasi system("ps aux");

 system("nome comando");
Ma se pero` devi fare anche il parsing dell'output, popen(3) e` quello 
che ti serve.


 Per sapere qual'è il window manager corrente dovrei fare un ps, e da qui il mio problema.
scusa ma mi sembra la soluzione piu' sporca.
Dici di voler fare questo programma per gnome... e allora perche' non
guardi i file di configurazione di gnome?
Ad esempio in ~/.gnome/default.wm c'e' scritto qual e' il window
manager usato, almeno in gnome 1.4
(poi in realta' non conosco le librerie di gnome quindi non so qual
e' il metodo migliore per accedere a tali informazioni, ma di sicuro
non e' un 'ps' :))
-- 
There are only 10 kinds of people in the world --
Those who understand binary, and those who don't.