Use KERN_PROCARGS to get the process path+filename on FreeBSD
This commit is contained in:
parent
af8bbefcab
commit
71ad3b1715
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user