我创建了一个C ++库,我将其编译为.framework,以便其他应用程序可以调用它。我想从库中获取调用.app文件的路径。我怎么能这样做?
在Windows中,我只需调用GetModuleFileName,其processID为NULL,并返回父进程。我想在Mac上做相同的事情。
谢谢!
答案 0 :(得分:1)
您可以使用此MacOSX Guru页上记录的sysctl(CTL_KERN, KERN_PROC ...)
。
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 ;
}
另请参阅this code,它会检索您需要的所有结构。