Sto cercando di ottenere un elenco di tutti i pacchetti di applicazioni in esecuzione. Applicazioni GUI che l'utente ha avviato, come mostra il Dock o Activity Monitor (mostra un'icona accanto a determinati processi). Ho scoperto che potrei usare sysctl()
con KERN_PROC_ALL
per ottenere un elenco di tutti i processi in esecuzione, ma che non mi diranno da quale pacchetto di applicazioni provengono. Applicazioni come Minecraft si presentano come java
e questo non è molto utile.Ottiene a livello di programmazione pacchetti di applicazioni in OS X
Ho trovato che il nome del gruppo processo in Activity Monitor mostra più o meno quello che voglio sapere: Activity Monitor Showing Minecraft Launcher Running http://gdries.nl/activmon.png
lingua L'implementazione non è importante. Attualmente funziona in C e funziona, ma se risulta necessario un altro ambiente non è un problema. Tutto quello che voglio fare è rilevare quali applicazioni l'utente ha in esecuzione in modo da poter registrare l'ora in cui ciascuna è stata utilizzata. (Il Controllo genitori fa qualcosa di simile ma lo registra in file plist che non posso analizzare)
scaricare il codice per l'utilità "ps" e utilizzare ciò di cui si ha bisogno. – user3629249
'ps' conosce solo i processi e non ha idea di quale bundle dell'applicazione provenga o anche che esista un pacchetto di applicazioni. Mi dà le stesse informazioni che posso già ottenere con 'sysctl',' KERN_PROC_ALL' e 'KERN_PROCARGS' (sebbene il formato di ritorno di quest'ultimo sia arcano e non documentato). –