Ce serait bien de bien obtenir: p>
et pouvons-nous faire cela pour Mac en C ou l'objectif C? Un certain exemple serait génial! P>
3 Réponses :
Hey, vous pouvez faire un appel système comme: et analyser les résultats. p> Vous pouvez faire cet appel à l'aide de Système () code> dans
"et analyser les résultats" Vous ne pouvez pas obtenir la sortie de System () code>, vous avez besoin
popen () code>, aussi ce n'est pas c ou objet c
La manière habituelle de le faire est de tomber dans C et d'énumérer à travers les numéros de série de processus sur le système (un retour en arrière au Pre-Mac OS X Days.) Nsworkspace a des API, mais ils ne fonctionnent pas toujours comme vous vous attendez. .
Notez que les processus classiques (sur les systèmes PowerPC) seront énumérés avec ce code (ayant des numéros de série de processus distincts), même s'ils partagent tous un ID de processus unique. P>
void DoWithProcesses(void (^ callback)(pid_t)) { NSArray *runningApplications = [[NSWorkspace sharedWorkspace] runningApplications]; for (NSRunningApplication *app in runningApplications) { pid_t pid = [app processIdentifier]; if (pid != ((pid_t)-1)) { callback(pid); } } }
getNextProcess () code> est maintenant obsolète sur 10.9
J'ai écrit cela avant la sortie de 10.9. ;) Je vais le mettre à jour.
@JonathangRynspan Lesplications RenundApplications apportent une manière moins de processus que le «PS -a» par exemple (ou l'ancienne propriété NextProcess () pour cette affaire). Existe-t-il un moyen de persuader Nsworkspace d'apporter des processus terminaux - moins? Et sinon, existe-t-il une autre solution programmatique à ce sujet, sans reprocher à un NASTASK pour avoir exécuté le bon vieux 'ps'?
Vous pouvez utiliser la commande BSD Sysctl routine ou PS pour obtenir une liste de tous les processus BSD.Avez un look sur https: // Stackoverflow .COM / A / 18821357/944634 p>