Use KERN_PROCARGS to get the process path+filename on FreeBSD

This commit is contained in:
Chris Robinson 2018-01-13 03:38:10 -08:00
parent af8bbefcab
commit 71ad3b1715

View File

@ -735,14 +735,13 @@ void GetProcBinary(al_string *path, al_string *fname)
size_t pathlen;
#ifdef __FreeBSD__
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
mib[3] = getpid();
if(sysctl(mib, 4, NULL, &pathlen, NULL, 0) == -1)
WARN("Failed to sysctl kern.proc.pathname.%d: %s\n", mib[3], strerror(errno));
int mib[4] = { CTL_KERN, KERN_PROCARGS, getpid() };
if(sysctl(mib, 3, NULL, &pathlen, NULL, 0) == -1)
WARN("Failed to sysctl kern.procargs.%d: %s\n", mib[2], strerror(errno));
else
{
pathname = malloc(pathlen + 1);
sysctl(mib, 4, (void*)pathname, &pathlen, NULL, 0);
sysctl(mib, 3, (void*)pathname, &pathlen, NULL, 0);
pathname[pathlen] = 0;
}
#endif