On Wed, Jun 30, 2010 at 1:40 PM, Jan Schampera <jan.schamp...@web.de> wrote:
> Clark J. Wang wrote: > > Running a cmd in background (by &) would not create subshell. Simple >> testing: >> >> #!/bin/bash >> >> function foo() >> { >> echo $$ >> } >> >> echo $$ >> foo & >> >> ### END OF SCRIPT ### >> >> The 2 $$s output the same. >> > > This doesn't mean that it doesn't create a subshell. It creates one, since > it can't replace your foreground process. > > This makes sense. It just shows that $$ does what it should do, it reports the relevant PID of > the parent ("main") shell you use. Then what's the problem with my script in my original mail? Seems like Bash does not handle the signal in a real-time way. As far as I can see, this applies to all kinds of subshells like > - explicit ones (...) > - pipeline components > - command substitution > - process substitution > - async shells (like above, running your function) > - ... > > J. >