diff options
author | 1998-07-12 07:17:28 +0000 | |
---|---|---|
committer | 1998-07-12 07:17:28 +0000 | |
commit | 2cf648d37ab4188201140f42a65adf6f19855d86 (patch) | |
tree | 82dc40052a8ca4db5785b82d0bb1e9acfc1930f2 | |
parent | document -n (diff) | |
download | wireguard-openbsd-2cf648d37ab4188201140f42a65adf6f19855d86.tar.xz wireguard-openbsd-2cf648d37ab4188201140f42a65adf6f19855d86.zip |
sync with NetBSD
-rw-r--r-- | sbin/reboot/reboot.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/sbin/reboot/reboot.c b/sbin/reboot/reboot.c index 9571a77ee16..d3bf499559a 100644 --- a/sbin/reboot/reboot.c +++ b/sbin/reboot/reboot.c @@ -1,4 +1,4 @@ -/* $OpenBSD: reboot.c,v 1.11 1998/04/25 00:09:03 deraadt Exp $ */ +/* $OpenBSD: reboot.c,v 1.12 1998/07/12 07:17:28 angelos Exp $ */ /* $NetBSD: reboot.c,v 1.8 1995/10/05 05:36:22 mycroft Exp $ */ /* @@ -44,7 +44,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)reboot.c 8.1 (Berkeley) 6/5/93"; #else -static char rcsid[] = "$OpenBSD: reboot.c,v 1.11 1998/04/25 00:09:03 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: reboot.c,v 1.12 1998/07/12 07:17:28 angelos Exp $"; #endif #endif /* not lint */ @@ -195,14 +195,30 @@ main(argc, argv) /* * After the processes receive the signal, start the rest of the - * buffers on their way. Wait 5 seconds between the SIGTERM and - * the SIGKILL to give everybody a chance. + * buffers on their way. */ sleep(2); if (!nflag) sync(); - sleep(3); + /* + * Wait for up to 30 seconds for processes that need a long + * time to shut down (e.g., X servers on old slow notebook PCs with + * only 8 MB of RAM and a slow disk; or databases), but probe at + * 1 second intervals and continue immediately if none are left. + */ + for (i=0; i<30; ++i) { + if (kill(-1, 0) == -1) { + if (errno == ESRCH) + break; + goto restart; + } + sleep(1); + } + + /* + * They've had their chance. SIGKILL the remaining processes. + */ for (i = 1;; ++i) { if (kill(-1, SIGKILL) == -1) { if (errno == ESRCH) |