On Thu, Jan 22, 2009 at 5:58 PM, Nerius Landys <nlan...@gmail.com> wrote: > Actually, because of the "exec" in the parent script, the line below > it, the "killing terminator process" line, never gets reached. So the > terminator process that waits to kill its parent always waits the full > 5 seconds in the background. If I pipe the output of the parent > script through less, it waits 5 seconds before it reaches the end of > the output. That is annoying. Is there any way to solve that? >
I see what you mean. Here's another option without exec: #!/bin/sh -T kill_all() { echo 'killing everything' kill $SPID $CPID 2> /dev/null exit 0 } trap kill_all SIGCHLD ./child & CPID=$! sleep 5 & SPID=$! echo "child is $CPID" echo "sleeper is $SPID" wait Here I'm using the fact that the termination of any child process causes SIGCHILD to be sent to the parent. Notice the '-T' in the first line; this is important, because without it the 'wait' call isn't interrupted until both children are dead. Unfortunately, this is a non-standard option, so you'll have to check if it is supported in your environment. - Max _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"