【发布时间】:2012-08-29 16:58:12
【问题描述】:
我在 OSX Mountain Lion 上,正在尝试使用其 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 字节的缓冲区)
标签: objective-c c macos unix process