2010-04-06 78 views

回答

1

你的問題相當模糊。你可以通過「獲得一個過程」來定義你的意思嗎?

一種方法(取決於您的定義):啓動Applications/Utilities中的Activity Monitor應用程序,並在列表中查找進程名稱。

+0

我完成了! 我的樣本: bool IsInBSDProcessList(char * name) //如果在進程列表中給定名稱進程,則返回YES。否則,返回斷言(name!= NULL);否則返回。 \t kinfo_proc * result; \t size_t count = 0; \t result =(kinfo_proc *)malloc(sizeof(kinfo_proc)); \t如果(GetBSDProcessList(&結果,&計數)== 0) \t { \t \t對(INT I = 0; I <計數;我++){ \t \t \t kinfo_proc增加* PROC = NULL; \t \t \t proc =&result [i]; \t \t \t如果(的strcmp(姓名,PROC-> kp_proc.p_comm)== 0) \t \t \t { \t \t \t \t免費(結果); \t \t \t \t return true; \t \t \t} \t \t} \t} \t免費(結果); \t return false; } – Haley 2010-05-18 05:41:09

0

也許

ps -eaf 

從控制檯

+0

不,從控制檯不是 thx相同 – Haley 2010-05-18 05:43:09

3

只是重新格式化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

我認爲malloc()是多餘的。 – nalply 2011-09-17 22:21:15

+0

重讀此答案並添加爲什麼'malloc()'是多餘的:在堆棧中分配'kinfo_proc'並獲取指針也是可行的。 – nalply 2015-02-06 17:33:41

+0

如果有人發現GetBSDProcessList函數有問題。它是:https://developer.apple.com/legacy/library/qa/qa2001/qa1123.html – 2015-03-25 12:19:37