2010-04-06 6 views

Répondre

1

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.

+0

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 kp_proc.p_comm) == 0) \t \t \t { \t \t \t \t libre (résultat); \t \t \t \t return true; \t \t \t}} \t \t \t} \t libre (résultat); \t return false; } – Haley

0

Peut-être

ps -eaf 

à partir d'une console

+0

non, pas à partir d'une console thx même – Haley

3

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; 
} 
+0

Je pense que malloc() est superflu. – nalply

+0

Relire cette réponse et ajouter pourquoi 'malloc()' est superflu: allouer 'kinfo_proc' sur la pile et prendre un pointeur fonctionnerait aussi. – nalply

+0

Si quelqu'un a des problèmes pour trouver la fonction GetBSDProcessList. Le voici: https://developer.apple.com/legacy/library/qa/qa2001/qa1123.html –

Questions connexes