我在OSX Mountain Lion上,試圖使用PID檢索進程的名稱。從PID獲取名稱?
以下是我使用的代碼:
pid_t pid = 10687;
char pathBuffer [PROC_PIDPATHINFO_MAXSIZE] = "";
char nameBuffer [256] = "";
int sizeOfVal = sizeof(nameBuffer);
proc_pidpath(pid, pathBuffer, sizeof(pathBuffer));
proc_name(pid, nameBuffer, sizeof(nameBuffer));
NSLog(@"Path: %s\n Name: %s\n", pathBuffer, nameBuffer);
上面的代碼能夠正常檢索名稱,但它只能檢索前15個字符和「忽略」的其餘部分。請注意,這不是顯示名稱的問題,但檢索它。問題不在於我的應用程序的其他部分,因爲我正在獨立應用程序中測試上述代碼。另外請注意,我嘗試更改PID,但不管我嘗試使用哪個PID,代碼僅檢索名稱的前15個字符。路徑檢索完美。
有沒有人有什麼想法我做錯了什麼?
當我研究這個問題,我發現一些更古怪。如果指定的緩衝區長度小於32字節,則即使名稱很短(並且適合31字節緩衝區),也不會有任何內容放入該字符串中。 – charliehorse55