Знать, какой процесс Mac загружает мою библиотеку - PullRequest
1 голос
/ 14 октября 2011

Я создал библиотеку C ++, которую я компилирую как .framework, чтобы другие приложения могли вызывать ее.Я хотел бы получить путь к вызывающему файлу .app из библиотеки.Как я могу это сделать?

В Windows я просто вызываю GetModuleFileName с идентификатором процесса как NULL, и он возвращает родительский процесс.Я хочу сделать эквивалент на Mac.

Спасибо!

1 Ответ

1 голос
/ 14 октября 2011

Вы можете использовать sysctl(CTL_KERN, KERN_PROC ...), как описано на этой MacOSX Guru странице.

int getprocessname( pid_t inPID, char *outName, size_t inMaxLen)
{
struct kinfo_proc info;
size_t length = sizeof(struct kinfo_proc);
int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, inPID };

if (sysctl(mib, 4, &info, &length, NULL, 0) < 0)
    return -1 ;
else
    strncpy(outName, info.kp_proc.p_comm, inMaxLen) ;

return 0    ;
}

См. Также этот код , который извлекает все необходимые вам структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...