pidof: support for omitted %PPID and additional separators
This commit introduces support for special %PPID value that can be passed to the -o option as a substitution for parent PID. It also allows users to use two additional separators for omitted PIDs - colon and semicolon.
This commit is contained in:
parent
8a2113bcf2
commit
f5d15f4718
4
pidof.1
4
pidof.1
@ -44,7 +44,9 @@ the current root directory of processes they do not own.
|
|||||||
Scripts too - this causes the program to also return process id's of
|
Scripts too - this causes the program to also return process id's of
|
||||||
shells running the named scripts.
|
shells running the named scripts.
|
||||||
.IP "-o \fIomitpid\fP"
|
.IP "-o \fIomitpid\fP"
|
||||||
Tells \fIpidof\fP to omit processes with that process id.
|
Tells \fIpidof\fP to omit processes with that process id. The special
|
||||||
|
pid \fB%PPID\fP can be used to name the parent process of the \fIpidof\fP
|
||||||
|
program, in other words the calling shell or shell script.
|
||||||
.SH "EXIT STATUS"
|
.SH "EXIT STATUS"
|
||||||
.TP
|
.TP
|
||||||
.B 0
|
.B 0
|
||||||
|
11
pidof.c
11
pidof.c
@ -246,10 +246,15 @@ static void add_to_omit_list (char *input_arg)
|
|||||||
pid_t omit_pid;
|
pid_t omit_pid;
|
||||||
|
|
||||||
omit_str = NULL;
|
omit_str = NULL;
|
||||||
omit_str = strtok(input_arg, ",");
|
omit_str = strtok(input_arg, ",;:");
|
||||||
while (omit_str) {
|
while (omit_str) {
|
||||||
|
|
||||||
omit_pid = strtoul(omit_str, &endptr, 10);
|
if (!strcmp(omit_str,"%PPID")) { /* keeping this %PPID garbage for backward compatibility only */
|
||||||
|
omit_pid = getppid(); /* ... as it can be replaced with $$ in common shells */
|
||||||
|
endptr = omit_str + sizeof("%PPID") - 1;
|
||||||
|
} else {
|
||||||
|
omit_pid = strtoul(omit_str, &endptr, 10);
|
||||||
|
}
|
||||||
|
|
||||||
if (*endptr == '\0') {
|
if (*endptr == '\0') {
|
||||||
if (omit_count == omit_size) {
|
if (omit_count == omit_size) {
|
||||||
@ -265,7 +270,7 @@ static void add_to_omit_list (char *input_arg)
|
|||||||
xwarnx(_("illegal omit pid value (%s)!\n"), omit_str);
|
xwarnx(_("illegal omit pid value (%s)!\n"), omit_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
omit_str = strtok(NULL, ",");
|
omit_str = strtok(NULL, ",;:");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user