Как получить путь к процессу из PID при запуске процесса?

В macOS X я отслеживаю все события запуска процессов. Когда процесс запускается, я получаю PID от ядра. И используя этот PID, я получаю полный путь процесса в пользовательском режиме.

Я использую proc_pidpath() только для события запуска процесса. Если я попытаюсь получить путь к уже запущенному процессу, он сработает.

 #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);
 }

Входная задача: запустить Chess.app из /Application/Chess.app

Фактический вывод: мой путь к процессу = /sbin/launchd

Ожидаемый результат: /Application/Chess.app или /Applications/Chess.app/Contents/MacOS/Chess.

Может ли кто-нибудь помочь мне, как получить путь к процессу, когда процесс разветвлен, но может быть не инициализирован?


person Brinda    schedule 26.12.2018    source источник
comment
Определите, каков путь процесса. Как вы думаете, рабочий каталог?   -  person Basile Starynkevitch    schedule 26.12.2018
comment
Я имею в виду stackoverflow.com/ questions/7511864/ , но он не работает, когда Process только что запущен.   -  person Brinda    schedule 26.12.2018