Merge branch 'masatake/procps-pidof-sep-option'

References:
 procps-ng/procps!58
This commit is contained in:
Craig Small 2018-03-02 21:43:27 +11:00
commit 825469fcb6
2 changed files with 13 additions and 2 deletions

View File

@ -27,6 +27,8 @@ pidof -- find the process ID of a running program.
.IR omitpid[,omitpid..] ] .IR omitpid[,omitpid..] ]
.RB [ \-o .RB [ \-o
.IR omitpid[,omitpid..].. ] .IR omitpid[,omitpid..].. ]
.RB [ \-S
.IR separator ]
.B program .B program
.RB [ program.. ] .RB [ program.. ]
.SH DESCRIPTION .SH DESCRIPTION
@ -47,6 +49,9 @@ shells running the named scripts.
Tells \fIpidof\fP to omit processes with that process id. The special 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 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. program, in other words the calling shell or shell script.
.IP "-S \fIseparator\fP"
Use \fIseparator\fP as a separator put between pids. Used only when
more than one pids are printed for the program.
.SH "EXIT STATUS" .SH "EXIT STATUS"
.TP .TP
.B 0 .B 0

10
pidof.c
View File

@ -64,6 +64,7 @@ static int __attribute__ ((__noreturn__)) usage(int opt)
fputs(_(" -c, --check-root omit processes with different root\n"), fp); fputs(_(" -c, --check-root omit processes with different root\n"), fp);
fputs(_(" -x also find shells running the named scripts\n"), fp); fputs(_(" -x also find shells running the named scripts\n"), fp);
fputs(_(" -o, --omit-pid <PID,...> omit processes with PID\n"), fp); fputs(_(" -o, --omit-pid <PID,...> omit processes with PID\n"), fp);
fputs(_(" -S, --separator SEP use SEP as separator put between PIDs"), fp);
fputs(USAGE_SEPARATOR, fp); fputs(USAGE_SEPARATOR, fp);
fputs(USAGE_HELP, fp); fputs(USAGE_HELP, fp);
fputs(USAGE_VERSION, fp); fputs(USAGE_VERSION, fp);
@ -287,12 +288,14 @@ int main (int argc, char **argv)
int found = 0; int found = 0;
int first_pid = 1; int first_pid = 1;
const char *opts = "scnxmo:?Vh"; const char *separator = " ";
const char *opts = "scnxmo:S:?Vh";
static const struct option longopts[] = { static const struct option longopts[] = {
{"check-root", no_argument, NULL, 'c'}, {"check-root", no_argument, NULL, 'c'},
{"single-shot", no_argument, NULL, 's'}, {"single-shot", no_argument, NULL, 's'},
{"omit-pid", required_argument, NULL, 'o'}, {"omit-pid", required_argument, NULL, 'o'},
{"separator", required_argument, NULL, 's'},
{"help", no_argument, NULL, 'h'}, {"help", no_argument, NULL, 'h'},
{"version", no_argument, NULL, 'V'}, {"version", no_argument, NULL, 'V'},
{NULL, 0, NULL, 0} {NULL, 0, NULL, 0}
@ -324,6 +327,9 @@ int main (int argc, char **argv)
pidof_root = pid_link(getpid(), "root"); pidof_root = pid_link(getpid(), "root");
} }
break; break;
case 'S':
separator = optarg;
break;
case 'V': case 'V':
printf (PROCPS_NG_VERSION); printf (PROCPS_NG_VERSION);
exit (EXIT_SUCCESS); exit (EXIT_SUCCESS);
@ -357,7 +363,7 @@ int main (int argc, char **argv)
first_pid = 0; first_pid = 0;
printf ("%ld", (long) procs[i].pid); printf ("%ld", (long) procs[i].pid);
} else { } else {
printf (" %ld", (long) procs[i].pid); printf ("%s%ld", separator, (long) procs[i].pid);
} }
if (opt_single_shot) break; if (opt_single_shot) break;
} }