in reply to Re: Re: (slightly OT) catching SIGTERM when system goes down
in thread (slightly OT) catching SIGTERM when system goes down

echo will not be seen during shutdown

I meant your echo system-call with redirection to the file.

I'm actually looking into the possibility that I realized only after I posted: I am running the program in a console and then

But still as a daemon? The console-shell being shut-down wont kill a daemonized prozess... (daemon, is that the correct spelling?)

Re: 'clean-later' marks: I thought it is best to do as little as possible inside a signal-handler because of problems with re-entrant system calls - that's why I set the global and do the clean-up work later. Am I wrong in this?

I guess you may be right under 'normal' circumstances, but a fatal signal like kill is, well, fatal; you either react or you don't, just setting a mark and going ahead won't work in the generell case, because your programm will likely be killed/terminated (as signaled) before it can check this mark (compare robartes post).

regards,
tomte


Hlade's Law:

If you have a difficult task, give it to a lazy person --
they will find an easier way to do it.


Edit: fixed typo

  • Comment on Re: Re: Re: (slightly OT) catching SIGTERM when system goes down

Replies are listed 'Best First'.
Re: Re: Re: Re: (slightly OT) catching SIGTERM when system goes down
by edan (Curate) on Apr 09, 2003 at 14:37 UTC

    echo will not be seen during shutdown

    I meant your echo system-call with redirection to the file.

    Of course you did - how silly of me! I did sprinkle echos in the sig_handler, etc. - I still didn't see it on reboot. But...

    I theory the script will be run as a daemon (alternate: demon) - but during testing I'm just running it from the console. I think that's my problem - yet another example of solving bugs by just explaining the problem to someone else. But anyway, what signal will my program get in the case when its parent is a console that got killed by a reboot?

    --
    3dan

      As a first step: daemonize your script and reboot the machine.

      Always test under real-life conditions...

      Concerning your question:
      I don't know if any signal must be send in this case, googling didn't help and I'm to tired right now to dig further, sorry :(

      FWIW: I experimented a little with this code

      sub handler { my $sig = shift; `echo $sig >> ~/scratch/testsig`; exit if grep /$sig/, qw/INT TERM KILL CHLD ABRT HUP QUIT/; } $SIG{$_} = \&handler foreach keys %SIG; while(1){}

      maybe that gets you started...but be carefull to have a console open to kill this from, just in case...

      kind regards,
      tomte


      Hlade's Law:

      If you have a difficult task, give it to a lazy person --
      they will find an easier way to do it.