As a general rule, programs should not use errno values as an exit status.
Compare "sleep 100000001" w/ and w/o this diff. ok? Index: sleep.c =================================================================== RCS file: /data/src/openbsd/src/bin/sleep/sleep.c,v retrieving revision 1.23 diff -u -p -r1.23 sleep.c --- sleep.c 9 Oct 2015 01:37:06 -0000 1.23 +++ sleep.c 10 Oct 2015 23:19:03 -0000 @@ -107,7 +107,7 @@ main(int argc, char *argv[]) if ((secs > 0) || (nsecs > 0)) if (nanosleep(&rqtp, NULL)) - return (errno); + err(1, NULL); return (0); }