File tree Expand file tree Collapse file tree 3 files changed +36
-1
lines changed Expand file tree Collapse file tree 3 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -350,6 +350,9 @@ Signal events will be emitted when the Node.js process receives a signal. Please
350350refer to signal(7) for a listing of standard POSIX signal names such as
351351` SIGINT ` , ` SIGHUP ` , etc.
352352
353+ The signal handler will receive the signal's name (` 'SIGINT' ` ,
354+ ` 'SIGTERM' ` , etc.) as the first argument.
355+
353356The name of each event will be the uppercase common name for the signal (e.g.
354357` 'SIGINT' ` for ` SIGINT ` signals).
355358
@@ -362,6 +365,14 @@ process.stdin.resume();
362365process .on (' SIGINT' , () => {
363366 console .log (' Received SIGINT. Press Control-D to exit.' );
364367});
368+
369+ // Using a single function to handle multiple signals
370+ function handle (signal ) {
371+ console .log (` Received ${ signal} ` );
372+ }
373+
374+ process .on (' SIGINT' , handle);
375+ process .on (' SIGTERM' , handle);
365376```
366377
367378* Note* : An easy way to send the ` SIGINT ` signal is with ` <Ctrl>-C ` in most
Original file line number Diff line number Diff line change @@ -195,7 +195,7 @@ function setupSignalHandlers() {
195195
196196 wrap . unref ( ) ;
197197
198- wrap . onsignal = function ( ) { process . emit ( type ) ; } ;
198+ wrap . onsignal = function ( ) { process . emit ( type , type ) ; } ;
199199
200200 const signum = constants [ type ] ;
201201 const err = wrap . start ( signum ) ;
Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+
3+ const common = require ( '../common' ) ;
4+ const assert = require ( 'assert' ) ;
5+
6+ if ( common . isWindows ) {
7+ common . skip ( 'Sending signals with process.kill is not supported on Windows' ) ;
8+ }
9+
10+ process . once ( 'SIGINT' , common . mustCall ( ( signal ) => {
11+ assert . strictEqual ( signal , 'SIGINT' ) ;
12+ } ) ) ;
13+
14+ process . kill ( process . pid , 'SIGINT' ) ;
15+
16+ process . once ( 'SIGTERM' , common . mustCall ( ( signal ) => {
17+ assert . strictEqual ( signal , 'SIGTERM' ) ;
18+ } ) ) ;
19+
20+ process . kill ( process . pid , 'SIGTERM' ) ;
21+
22+ // Prevent Node.js from exiting due to empty event loop before signal handlers
23+ // are fired
24+ setImmediate ( ( ) => { } ) ;
You can’t perform that action at this time.
0 commit comments