首页 > 解决方案 > 进程启动时如何从PID获取进程路径?

问题描述

在 macOS X 中,我正在监视所有进程启动事件。当进程启动时,我从内核获取 PID。并使用该 PID 我正在用户模式下检索完整的进程路径。

我仅将 proc_pidpath() 用于进程 lauch 事件。如果我尝试获取已经运行的进程的进程路径,它可以工作。

 #define MAX_PROCESS_PATH_LEN 1024
 int iReturn;
 char ProcessPath[MAX_PROCESS_PATH_LEN];
 iReturn = proc_pidpath(processID , processPath , sizeof(ProcessPath));
 if(0 == iReturn)
 {
      // proc_pidpath failed
 }
 else
 {
      NSLog(@"My Process Path = %s" , ProcessPath);
 }

输入任务:从 /Application/Chess.app 启动 Chess.app

实际输出:我的进程路径 = /sbin/launchd

预期输出为 /Application/Chess.app 或 /Applications/Chess.app/Contents/MacOS/Chess。

当进程是分叉但可能未初始化时,谁能帮我获取进程路径?

标签: macosprocessbsd

解决方案


推荐阅读