diff --git a/src/node.js b/src/node.js index d7ba4e83fc..789cb9b0e1 100644 --- a/src/node.js +++ b/src/node.js @@ -194,13 +194,17 @@ }; process.kill = function(pid, sig) { - sig = sig || 'SIGTERM'; - - if (!startup.lazyConstants()[sig]) { - throw new Error('Unknown signal: ' + sig); + // preserve null signal + if (0 === sig) { + process._kill(pid, 0); + } else { + sig = sig || 'SIGTERM'; + if (startup.lazyConstants()[sig]) { + process._kill(pid, startup.lazyConstants()[sig]); + } else { + throw new Error('Unknown signal: ' + sig); + } } - - process._kill(pid, startup.lazyConstants()[sig]); }; }; diff --git a/test/simple/test-process-kill-null.js b/test/simple/test-process-kill-null.js new file mode 100644 index 0000000000..d45ea9f9f7 --- /dev/null +++ b/test/simple/test-process-kill-null.js @@ -0,0 +1,20 @@ + +var assert = require('assert'); +var spawn = require('child_process').spawn; + +var cat = spawn('cat'); +var called; + +process.kill(cat.pid, 0); + +cat.stdout.on('data', function(){ + called = true; + process.kill(cat.pid, 'SIGKILL'); +}); + +// EPIPE when null sig fails +cat.stdin.write('test'); + +process.on('exit', function(){ + assert.ok(called); +}); \ No newline at end of file