Comment puis-je obtenir un processus par nom de processus connu sur Mac OS?Comment obtenir un processus par nom de processus de savoir sur Mac OS?
Répondre
Votre question est plutôt vague. Pouvez-vous définir ce que vous entendez par "obtenir un processus"?
Une méthode (en fonction de votre définition): lancez l'application Moniteur d'activité dans Applications/Utilitaires et recherchez le nom du processus dans la liste.
Je l'ai fini! Mon exemple: bool IsInBSDProcessList (char * nom) // Renvoie YES si nom de processus dans la liste de processus. Sinon, renvoyez NO { \t assert (nom! = NULL); \t kinfo_proc * résultat; \t size_t count = 0; Resultat = (kinfo_proc *) malloc (sizeof (kinfo_proc)) \t \t si (GetBSDProcessList (et résultat, et compte) == 0) { \t \t \t for (int i = 0; i
Juste reformatée réponse Haley:
// Return YES if given name process in process list . Otherwise return NO
bool IsInBSDProcessList(char *name) {
assert(name != NULL);
kinfo_proc *result;
size_t count = 0;
result = (kinfo_proc *)malloc(sizeof(kinfo_proc));
if(GetBSDProcessList(&result,&count) == 0) {
for (int i = 0; i < count; i++) {
kinfo_proc *proc = NULL;
proc = &result[i];
if (strcmp(name, proc->kp_proc.p_comm) == 0) {
free(result);
return true;
}
}
}
free(result);
return false;
}
Je pense que malloc() est superflu. – nalply
Relire cette réponse et ajouter pourquoi 'malloc()' est superflu: allouer 'kinfo_proc' sur la pile et prendre un pointeur fonctionnerait aussi. – nalply
Si quelqu'un a des problèmes pour trouver la fonction GetBSDProcessList. Le voici: https://developer.apple.com/legacy/library/qa/qa2001/qa1123.html –
Vous devez mettre votre code dans une réponse, et le formater pour le rendre plus facile à lire. Puis acceptez cette réponse –