bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bizarre trap behavior while reading a file


From: Greg Wooledge
Subject: Re: bizarre trap behavior while reading a file
Date: Mon, 28 Mar 2011 10:18:31 -0400
User-agent: Mutt/1.4.2.3i

On Mon, Mar 28, 2011 at 06:59:23AM -0700, tytus64 wrote:
> 
> Interesting... 
> I used kill -HUP <pid> instead of killall -HUP <prog_name> and it works
> without interrupting the first loop. I also noticed 2 processes running when
> the first loop is iterating but only 1 when the second loop is iterating:
> 
> $ ps -ef |grep <prog_name>
> bla  3711  2671  0 09:50 pts/0    00:00:00 /bin/bash ./<prog_name>
> bla  3714  3711 26 09:50 pts/0    00:00:01 /bin/bash ./<prog_name>
> bla  6739  2779  0 09:50 pts/1    00:00:00 grep <prog_name>
> $ ps -ef |grep <prog_name>
> bla  3711  2671  3 09:50 pts/0    00:00:00 /bin/bash ./<prog_name>
> bla  8461  2779  0 09:50 pts/1    00:00:00 grep <prog_name>
> 
> It seems to me that "cat" in the first look is to blame. I probably receives
> SIGHUP but I am not sure about the rules of process naming: why <prog_name>
> instead of cat?

First point: process 3714 is a subshell.  It's created because the code
you wrote required bash to spawn a subshell which implements your while
loop (not cat).

Second point: because you used killall <name>, you sent signals to
more than one process.  You were killing the parent shell *and* the
subshell.

Third point: you aren't seeing the cat because your grep doesn't say
to show cat.  Even if your grep did ask for cat in addition to <name>,
cat might already have finished by the time your ps|grep runs.  It
depends on the size of the file, etc.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]