macos - 从pid获取应用程序的真实路径?

标签 macos process macos-carbon bsd

如何从进程 ID 中获取进程详细信息,例如应用程序名称和应用程序的真实路径?

我使用的是 Mac OS X。

最佳答案

如果您知道 PID,则很容易获取进程名称/位置,只需使用 proc_name 或 proc_pidpath 即可。看一下下面的示例,它提供了流程路径:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <libproc.h>

int main (int argc, char* argv[])
{
    pid_t pid; int ret;
    char pathbuf[PROC_PIDPATHINFO_MAXSIZE];

    if ( argc > 1 ) {
        pid = (pid_t) atoi(argv[1]);
        ret = proc_pidpath (pid, pathbuf, sizeof(pathbuf));
        if ( ret <= 0 ) {
            fprintf(stderr, "PID %d: proc_pidpath ();\n", pid);
            fprintf(stderr, "    %s\n", strerror(errno));
        } else {
            printf("proc %d: %s\n", pid, pathbuf);
        }
    }

    return 0;
}

关于macos - 从pid获取应用程序的真实路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7511864/

相关文章:

multithreading - 用户级线程会利用多处理吗?

objective-c - 苹果操作系统 X : prevent the crash report window from appearing in my app

objective-c - 当 VPN 连接断开时收到通知

objective-c - 使用 Core Graphics 强制窗口重绘自身?

macos - 在菜单当前快速打开时从 NSTimer 动态更新 NSMenuItem?

c - C 中的外部命令行子进程在结束之前不会给出输出

cocoa - 从 MAC OS X 应用程序中提取信息

macos - float 在 GNU smalltalk (gst) 中引发除零错误

macos - 如何在 Mac OS 上安装 GNU grep?

c - 如何从Linux的进程中分离可执行文件以进行实时更新