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. 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)

Reply via email to