diff options
author | jilles <jilles@FreeBSD.org> | 2013-05-28 22:07:31 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2013-05-28 22:07:31 +0000 |
commit | 95192e8f55193ed0e4619c6192dbab1c23eb84d8 (patch) | |
tree | 3bec83639c75f4ef73930610bfa741cda65f44be | |
parent | 4f8aa13b4a8cb4702c8cf4795a91fb5302ae335f (diff) | |
download | FreeBSD-src-95192e8f55193ed0e4619c6192dbab1c23eb84d8.zip FreeBSD-src-95192e8f55193ed0e4619c6192dbab1c23eb84d8.tar.gz |
sleep: Improve nanosleep() error handling:
* Work around kernel bugs that cause a spurious [EINTR] return if a
debugger (such as truss(1)) is attached.
* Write an error message if an error other than [EINTR] occurs.
PR: bin/178664
-rw-r--r-- | bin/sleep/sleep.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/bin/sleep/sleep.c b/bin/sleep/sleep.c index fa7deb2..0d41a42 100644 --- a/bin/sleep/sleep.c +++ b/bin/sleep/sleep.c @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include <ctype.h> #include <err.h> +#include <errno.h> #include <limits.h> #include <signal.h> #include <stdint.h> @@ -87,8 +88,8 @@ main(int argc, char *argv[]) warnx("about %d second(s) left out of the original %d", (int)time_to_sleep.tv_sec, (int)original); report_requested = 0; - } else - break; + } else if (errno != EINTR) + err(1, "nanosleep"); } return (0); } |