Репозитории ALT
5.1: | 2.86-alt2 |
4.1: | 2.86-alt2 |
4.0: | 2.86-alt1 |
3.0: | 2.85-alt8 |
Группа :: Система/Настройка/Загрузка и инициализация
Пакет: SysVinit
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: sysvinit-2.86-deb-killall-retval.patch
Скачать
Скачать
#! /bin/sh /usr/share/dpatch/dpatch-run
## 82_killall_retval.dpatch by Petter Reinholdtsen
Modify killall5 to make it report if it found any processes to kill.
This make it possible to avoid sleeping for 5 seconds during shutdown
if there are no processes left to wait for.
@DPATCH@
Index: sysvinit/man/killall5.8
===================================================================
--- sysvinit/man/killall5.8 (revision 856)
+++ sysvinit/man/killall5.8 (working copy)
@@ -10,6 +10,10 @@
kernel threads and the processes in its own session, so it won't kill
the shell that is running the script it was called from. Its primary
(only) use is in the \fBrc\fP scripts found in the /etc/init.d directory.
+.SH EXIT STATUS
+The program return zero if it killed processes. It return 2 if no
+process were killed, and 1 if it was unable to find any processes
+(/proc/ is missing).
.SH SEE ALSO
.BR halt (8),
.BR reboot (8)
Index: sysvinit/src/killall5.c
===================================================================
--- sysvinit/src/killall5.c (revision 856)
+++ sysvinit/src/killall5.c (working copy)
@@ -603,6 +603,9 @@
int pid, sid = -1;
int sig = SIGKILL;
+ /* return non-zero if no process was killed */
+ int retval = 2;
+
/* Get program name. */
if ((progname = strrchr(argv[0], '/')) == NULL)
progname = argv[0];
@@ -643,15 +646,17 @@
/* Read /proc filesystem */
if (readproc(1) < 0) {
kill(-1, SIGCONT);
- exit(1);
+ return(1);
}
/* Now kill all processes except init (pid 1) and our session. */
sid = (int)getsid(0);
pid = (int)getpid();
for (p = plist; p; p = p->next)
- if (p->pid != 1 && p->pid != pid && p->sid != sid && !p->kernel)
+ if (p->pid != 1 && p->pid != pid && p->sid != sid && !p->kernel) {
kill(p->pid, sig);
+ retval = 0;
+ }
/* And let them continue. */
kill(-1, SIGCONT);
@@ -662,5 +667,5 @@
/* Force the kernel to run the scheduler */
usleep(1);
- return 0;
+ return retval;
}