Browse Source

process: document kill(0), disallow kill(O_RDWR)

The null signal test existed, but only tested the case where the target
process existed, not when it did not exist.

Also clarified that SIGUSR1 is reserved by Node.js only for receiveing,
its not at all reserved when sending a signal with kill().

kill(pid, 'O_RDWR'), or any other node constant, "worked". I fixed this
by also checking for 'SIG'. The same as done in the isSignal() function.
Now the signal names supported by process.kill() are the same as those
supported by process.on().
v0.10.23-release
Sam Roberts 12 years ago
committed by Trevor Norris
parent
commit
8aac118b69
  1. 7
      doc/api/process.markdown
  2. 3
      src/node.js
  3. 6
      test/simple/test-process-kill-null.js

7
doc/api/process.markdown

@ -421,6 +421,9 @@ string describing the signal to send. Signal names are strings like
'SIGINT' or 'SIGHUP'. If omitted, the signal will be 'SIGTERM'.
See kill(2) for more information.
Will throw an error if target does not exist, and as a special case, a signal of
`0` can be used to test for the existence of a process.
Note that just because the name of this function is `process.kill`, it is
really just a signal sender, like the `kill` system call. The signal sent
may do something other than kill the target process.
@ -438,8 +441,8 @@ Example of sending a signal to yourself:
process.kill(process.pid, 'SIGHUP');
Note: SIGUSR1 is reserved by node.js. It can be used to kickstart the
debugger.
Note: When SIGUSR1 is received by Node.js it starts the debugger, see
[Signal Events](#process_signal_events).
## process.pid

3
src/node.js

@ -717,7 +717,8 @@
r = process._kill(pid, 0);
} else {
sig = sig || 'SIGTERM';
if (startup.lazyConstants()[sig]) {
if (startup.lazyConstants()[sig] &&
sig.slice(0, 3) === 'SIG') {
r = process._kill(pid, startup.lazyConstants()[sig]);
} else {
throw new Error('Unknown signal: ' + sig);

6
test/simple/test-process-kill-null.js

@ -27,7 +27,13 @@ var spawn = require('child_process').spawn;
var cat = spawn('cat');
var called;
assert.ok(process.kill(cat.pid, 0));
cat.on('exit', function() {
assert.throws(function() {
process.kill(cat.pid, 0);
}, Error);
});
cat.stdout.on('data', function() {
called = true;

Loading…
Cancel
Save