On Wed, Jun 30, 2010 at 12:38 PM, Chris F.A. Johnson <ch...@cfajohnson.com>wrote:
> On Wed, 30 Jun 2010, Clark J. Wang wrote: > > > I have a bash script like this: > > > > #!/bin/bash > > > > trap 'echo killed by SIGALRM; exit 1' ALRM > > > > function wait_kill() > > { > > sleep 5 > > kill -ALRM $$ > > } > > > > wait_kill & > > > > sleep 3600 > > > > ### END OF THE SCRIPT ### > > > > It does not work as I expected. The running script was not terminated > after > > 5 seconds. So what's wrong here? > > $$ refers to the subshell. There's no subshell here, I think. > Try: > > trap 'echo killed by SIGALRM; exit 1' ALRM > > function wait_kill() > { > sleep 5 > kill -ALRM $pid > } > > pid=$$ > wait_kill & > > sleep 3600 > > -- > Chris F.A. Johnson, <http://cfajohnson.com> > Author: > Pro Bash Programming: Scripting the GNU/Linux Shell (2009, Apress) > Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress) >