diff --git a/NEWS b/NEWS index e3e7148c..d395bc08 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ procps-ng-NEXT * library Re-add elogind support merge #151 Used memory is Total - Available + * pidwait: Better warning if pidfd_open not implemented * pmap: Dont reuse stdin filehandle issue #231 * ps: threads again display when -L is used with -q issue #234 * ps: proper aix format string behavior was restored diff --git a/pgrep.1 b/pgrep.1 index e29e6e1a..5e1db7f2 100644 --- a/pgrep.1 +++ b/pgrep.1 @@ -7,7 +7,7 @@ .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" -.TH PGREP "1" "2021-12-25" "procps-ng" "User Commands" +.TH PGREP "1" "2022-07-18" "procps-ng" "User Commands" .SH NAME pgrep, pkill, pidwait \- look up, signal, or wait for processes based on name and other attributes .SH SYNOPSIS @@ -281,7 +281,11 @@ can not be combined. Let me know if you need to do this. .PP Defunct processes are reported. - +.PP +.B pidwait +requires the +.BR pidfd_open (2) +system call which first appeared in Linux 5.3. .SH "SEE ALSO" .BR ps (1), .BR regex (7), diff --git a/pgrep.c b/pgrep.c index 328873b1..3a01c789 100644 --- a/pgrep.c +++ b/pgrep.c @@ -1064,6 +1064,8 @@ int main (int argc, char **argv) printf(_("waiting for %s (pid %lu)\n"), procs[i].str, procs[i].num); int pidfd = pidfd_open(procs[i].num, 0); if (pidfd == -1) { + if (errno == ENOSYS) + xerrx(EXIT_FAILURE, _("pidfd_open() not implemented in Linux < 5.3")); /* ignore ESRCH, same as pkill */ if (errno != ESRCH) xwarn(_("opening pid %ld failed"), procs[i].num);