On Mon, Jul 26, 2010 at 2:16 PM, Greg Wooledge <wool...@eeg.ccf.org> wrote:
> On Sun, Jul 25, 2010 at 04:54:53PM -0400, Chet Ramey wrote: > > On 7/25/10 8:51 AM, Julien Dessaux wrote: > > > I have a script that trap USR1 for reloading purpose. The signal > handler > > > then does some cleaning, then exec $0. > > > > With BSD and Posix-style signals, the caught signal is automatically > > blocked by the kernel when executing its signal handler. If you exec > > a new program out of the signal handler, it's going to be executed > > with that signal blocked. From the new program's perspective, it really > > is as if you never left the signal handler. > > I believe the typical workaround for this type of issue is to set a > variable in the signal handler, and then (outside the trap, in some sort > of main loop) check for that variable and do the real handling. > > I've never developed a bash script that needed that sort of sophistication, > but that's how it's generally done in C. > I really didn't believed it would just appear to be a posix issue! I guess I am trying to do something that is really too ugly... Anyway, thank you both. -- Julien Dessaux