On Thu, Jan 31, 2013 at 1:59 AM, Michael Jackson <[email protected]> wrote:
> It would be really nice to be able to exit a process gracefully on
> SIGINT/SIGTERM. Right now both signals are hardwired to exit with a status
> of 1 (see the SignalExit function in node.cc) without emitting the "exit"
> event on the process object, but I don't see why that needs to be the case.
>
> Ideally these signals would be handled just like any other signal. The
> default may be to exit with a 1 status, but it would be nice to be able to
> override this in userland.

You can:

  process.on('SIGTERM', function() {
    // do whatever
  });

Ditto for SIGINT.

The reason why the default handler exits is:

a) Historical, and

b) Semantic.  The 'exit' event is emitted only when the event loop has
completed (no active handles left).  Such is not the case with SIGINT
or SIGTERM.

> A couple of real world use cases:
>
> - Using Ctrl+C in a terminal that is attached to a running process
> - Heroku's dyno manifold issues SIGTERM to processes to let them know they
> are going to be restarted (see
> https://devcenter.heroku.com/articles/ps#graceful-shutdown-with-sigterm). As
> it stands now there is no way to ensure that a running server doesn't drop
> open connections during a deploy on Heroku.
>
> What is the reason for the current behavior? Is there any way around it for
> the use cases I've described?
>
> Thanks in advance.
>
> --
> Michael Jackson
> @mjackson

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to