Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37885175
en ru br
Репозитории ALT
5.1: 2.86-alt2
4.1: 2.86-alt2
4.0: 2.86-alt1
3.0: 2.85-alt8
www.altlinux.org/Changes

Группа :: Система/Настройка/Загрузка и инициализация
Пакет: 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;
 }
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin