我在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