mirror of git://git.suckless.org/sbase
Return an error if we can't open the files in /proc
This commit is contained in:
parent
1f783e7d96
commit
892d84ca24
3
pidof.c
3
pidof.c
|
@ -74,7 +74,8 @@ main(int argc, char *argv[])
|
||||||
if (onode)
|
if (onode)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
parsestat(pid, &ps);
|
if (parsestat(pid, &ps) < 0)
|
||||||
|
continue;
|
||||||
if (parsecmdline(ps.pid, cmdline,
|
if (parsecmdline(ps.pid, cmdline,
|
||||||
sizeof(cmdline)) < 0) {
|
sizeof(cmdline)) < 0) {
|
||||||
cmd = ps.comm;
|
cmd = ps.comm;
|
||||||
|
|
6
ps.c
6
ps.c
|
@ -95,7 +95,8 @@ psout(struct procstat *ps)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
parsestatus(ps->pid, &pstatus);
|
if (parsestatus(ps->pid, &pstatus) < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
/* This is the default case, only print processes that have
|
/* This is the default case, only print processes that have
|
||||||
* the same controlling terminal as the invoker and the same
|
* the same controlling terminal as the invoker and the same
|
||||||
|
@ -175,6 +176,7 @@ psr(const char *file)
|
||||||
if (!pidfile(file))
|
if (!pidfile(file))
|
||||||
return;
|
return;
|
||||||
pid = estrtol(file, 10);
|
pid = estrtol(file, 10);
|
||||||
parsestat(pid, &ps);
|
if (parsestat(pid, &ps) < 0)
|
||||||
|
return;
|
||||||
psout(&ps);
|
psout(&ps);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ parsecmdline(pid_t pid, char *buf, size_t siz)
|
||||||
snprintf(path, sizeof(path), "/proc/%d/cmdline", pid);
|
snprintf(path, sizeof(path), "/proc/%d/cmdline", pid);
|
||||||
fd = open(path, O_RDONLY);
|
fd = open(path, O_RDONLY);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
eprintf("open %s:", path);
|
return -1;
|
||||||
n = read(fd, buf, siz - 1);
|
n = read(fd, buf, siz - 1);
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
eprintf("read %s:", path);
|
eprintf("read %s:", path);
|
||||||
|
@ -44,7 +44,7 @@ parsestat(pid_t pid, struct procstat *ps)
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "/proc/%d/stat", pid);
|
snprintf(path, sizeof(path), "/proc/%d/stat", pid);
|
||||||
if (!(fp = fopen(path, "r")))
|
if (!(fp = fopen(path, "r")))
|
||||||
eprintf("fopen %s:", path);
|
return -1;
|
||||||
fscanf(fp, "%d %s %c %d %d %d %d %d %u %lu %lu %lu %lu %lu %lu",
|
fscanf(fp, "%d %s %c %d %d %d %d %d %u %lu %lu %lu %lu %lu %lu",
|
||||||
&ps->pid, ps->comm,
|
&ps->pid, ps->comm,
|
||||||
&ps->state, &ps->ppid, &ps->pgrp,
|
&ps->state, &ps->ppid, &ps->pgrp,
|
||||||
|
@ -73,7 +73,7 @@ parsestatus(pid_t pid, struct procstatus *pstatus)
|
||||||
snprintf(path, sizeof(path), "/proc/%d/status", pid);
|
snprintf(path, sizeof(path), "/proc/%d/status", pid);
|
||||||
fd = open(path, O_RDONLY);
|
fd = open(path, O_RDONLY);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
eprintf("open %s:", path);
|
return -1;
|
||||||
n = read(fd, buf, sizeof(buf) - 1);
|
n = read(fd, buf, sizeof(buf) - 1);
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
eprintf("%s: read error:", path);
|
eprintf("%s: read error:", path);
|
||||||
|
|
Loading…
Reference in New Issue