diff --git a/sbin/reboot/reboot.c b/sbin/reboot/reboot.c index 89384cf2e484..e1ab762d2019 100644 --- a/sbin/reboot/reboot.c +++ b/sbin/reboot/reboot.c @@ -1,4 +1,4 @@ -/* $NetBSD: reboot.c,v 1.12 1997/07/17 02:52:22 perry Exp $ */ +/* $NetBSD: reboot.c,v 1.13 1997/07/19 22:27:20 perry Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -43,7 +43,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)reboot.c 8.1 (Berkeley) 6/5/93"; #else -static char rcsid[] = "$NetBSD: reboot.c,v 1.12 1997/07/17 02:52:22 perry Exp $"; +static char rcsid[] = "$NetBSD: reboot.c,v 1.13 1997/07/19 22:27:20 perry Exp $"; #endif #endif /* not lint */ @@ -155,8 +155,18 @@ main(argc, argv) (void)signal(SIGHUP, SIG_IGN); /* Send a SIGTERM first, a chance to save the buffers. */ - if (kill(-1, SIGTERM) == -1) - err("SIGTERM processes: %s", strerror(errno)); + if (kill(-1, SIGTERM) == -1) { + /* + * If ESRCH, everything's OK: we're the only non-system + * process! That can happen e.g. via 'exec reboot' in + * single-user mode. + */ + if (errno != ESRCH) { + (void)fprintf(stderr, "%s: SIGTERM processes: %s", + dohalt ? "halt" : "reboot", strerror(errno)); + goto restart; + } + } /* * After the processes receive the signal, start the rest of the