Use libprocstat(3) when retrieving binary information for a process.
MFC after: 1 month
This commit is contained in:
parent
eec6cb1cf2
commit
66e2f9998b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=249678
@ -59,7 +59,7 @@ procstat(struct procstat *prstat, struct kinfo_proc *kipp)
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (bflag)
|
if (bflag)
|
||||||
procstat_bin(kipp);
|
procstat_bin(prstat, kipp);
|
||||||
else if (cflag)
|
else if (cflag)
|
||||||
procstat_args(kipp);
|
procstat_args(kipp);
|
||||||
else if (eflag)
|
else if (eflag)
|
||||||
|
@ -37,7 +37,7 @@ void kinfo_proc_sort(struct kinfo_proc *kipp, int count);
|
|||||||
void procstat_args(struct kinfo_proc *kipp);
|
void procstat_args(struct kinfo_proc *kipp);
|
||||||
void procstat_auxv(struct kinfo_proc *kipp);
|
void procstat_auxv(struct kinfo_proc *kipp);
|
||||||
void procstat_basic(struct kinfo_proc *kipp);
|
void procstat_basic(struct kinfo_proc *kipp);
|
||||||
void procstat_bin(struct kinfo_proc *kipp);
|
void procstat_bin(struct procstat *prstat, struct kinfo_proc *kipp);
|
||||||
void procstat_cred(struct procstat *prstat, struct kinfo_proc *kipp);
|
void procstat_cred(struct procstat *prstat, struct kinfo_proc *kipp);
|
||||||
void procstat_env(struct kinfo_proc *kipp);
|
void procstat_env(struct kinfo_proc *kipp);
|
||||||
void procstat_files(struct procstat *prstat, struct kinfo_proc *kipp);
|
void procstat_files(struct procstat *prstat, struct kinfo_proc *kipp);
|
||||||
|
@ -40,40 +40,19 @@
|
|||||||
#include "procstat.h"
|
#include "procstat.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
procstat_bin(struct kinfo_proc *kipp)
|
procstat_bin(struct procstat *prstat, struct kinfo_proc *kipp)
|
||||||
{
|
{
|
||||||
char pathname[PATH_MAX];
|
int osrel;
|
||||||
int error, osrel, name[4];
|
static char pathname[PATH_MAX];
|
||||||
size_t len;
|
|
||||||
|
|
||||||
if (!hflag)
|
if (!hflag)
|
||||||
printf("%5s %-16s %8s %s\n", "PID", "COMM", "OSREL", "PATH");
|
printf("%5s %-16s %8s %s\n", "PID", "COMM", "OSREL", "PATH");
|
||||||
|
|
||||||
name[0] = CTL_KERN;
|
if (procstat_getpathname(prstat, kipp, pathname, sizeof(pathname)) != 0)
|
||||||
name[1] = KERN_PROC;
|
|
||||||
name[2] = KERN_PROC_PATHNAME;
|
|
||||||
name[3] = kipp->ki_pid;
|
|
||||||
|
|
||||||
len = sizeof(pathname);
|
|
||||||
error = sysctl(name, 4, pathname, &len, NULL, 0);
|
|
||||||
if (error < 0 && errno != ESRCH) {
|
|
||||||
warn("sysctl: kern.proc.pathname: %d", kipp->ki_pid);
|
|
||||||
return;
|
return;
|
||||||
}
|
if (strlen(pathname) == 0)
|
||||||
if (error < 0)
|
|
||||||
return;
|
|
||||||
if (len == 0 || strlen(pathname) == 0)
|
|
||||||
strcpy(pathname, "-");
|
strcpy(pathname, "-");
|
||||||
|
if (procstat_getosrel(prstat, kipp, &osrel) != 0)
|
||||||
name[2] = KERN_PROC_OSREL;
|
|
||||||
|
|
||||||
len = sizeof(osrel);
|
|
||||||
error = sysctl(name, 4, &osrel, &len, NULL, 0);
|
|
||||||
if (error < 0 && errno != ESRCH) {
|
|
||||||
warn("sysctl: kern.proc.osrel: %d", kipp->ki_pid);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (error < 0)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
printf("%5d ", kipp->ki_pid);
|
printf("%5d ", kipp->ki_pid);
|
||||||
|
Loading…
Reference in New Issue
Block a user