leo@marco.UUCP (Matthias Pfaller) (07/02/90)
There is (I think) a bug in init.c. If you use pipes in /etc/rc not all
processes are children of the shell executing /etc/rc. So init adopts them
and continues after their termination instead of after the termination of
/etc/rc.
Matthias Pfaller (leo@verw.marco.de)
*** init.c Fri Jun 1 11:15:23 1990
--- init.c.new Mon Jul 2 08:48:13 1990
***************
*** 122,130 ****
sync(); /* force buffers out onto disk */
/* Execute the /etc/rc file. */
! if(fork()) {
/* Parent just waits. */
! wait(&status);
} else {
/* Child exec's the shell to do the work. */
if(open("/etc/rc", 0) < 0) exit(EXIT_OPENFAIL);
--- 122,131 ----
sync(); /* force buffers out onto disk */
/* Execute the /etc/rc file. */
! if(pid = fork()) {
/* Parent just waits. */
! while (wait(&status) != pid)
! ;
} else {
/* Child exec's the shell to do the work. */
if(open("/etc/rc", 0) < 0) exit(EXIT_OPENFAIL);