В 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.
Может ли кто-нибудь помочь мне, как получить путь к процессу, когда процесс разветвлен, но может быть не инициализирован?