| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1700,8 +1700,8 @@ may not actually terminate the process. | |||
| 1700 | 1700 | See kill(2) for reference. | |
| 1701 | 1701 | ||
| 1702 | 1702 | On Windows, where POSIX signals do not exist, the `signal` argument will be | |
| 1703 | - ignored, and the process will be killed forcefully and abruptly (similar to | ||
| 1704 | - `'SIGKILL'`). | ||
| 1703 | + ignored except for `'SIGKILL'`, `'SIGTERM'`, `'SIGINT'` and `'SIGQUIT'`, and the | ||
| 1704 | + process will always be killed forcefully and abruptly (similar to `'SIGKILL'`). | ||
| 1705 | 1705 | See [Signal Events][] for more details. | |
| 1706 | 1706 | ||
| 1707 | 1707 | On Linux, child processes of child processes will not be terminated | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -314,6 +314,12 @@ class ProcessWrap : public HandleWrap { | |||
| 314 | 314 | ProcessWrap* wrap; | |
| 315 | 315 | ASSIGN_OR_RETURN_UNWRAP(&wrap, args.This()); | |
| 316 | 316 | int signal = args[0]->Int32Value(env->context()).FromJust(); | |
| 317 | + #ifdef _WIN32 | ||
| 318 | + if (signal != SIGKILL && signal != SIGTERM && signal != SIGINT && | ||
| 319 | + signal != SIGQUIT) { | ||
| 320 | + signal = SIGKILL; | ||
| 321 | + } | ||
| 322 | + #endif | ||
| 317 | 323 | int err = uv_process_kill(&wrap->process_, signal); | |
| 318 | 324 | args.GetReturnValue().Set(err); | |
| 319 | 325 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -39,3 +39,22 @@ assert.strictEqual(cat.signalCode, null); | |||
| 39 | 39 | assert.strictEqual(cat.killed, false); | |
| 40 | 40 | cat.kill(); | |
| 41 | 41 | assert.strictEqual(cat.killed, true); | |
| 42 | + | ||
| 43 | + // Test different types of kill signals on Windows. | ||
| 44 | + if (common.isWindows) { | ||
| 45 | + for (const sendSignal of ['SIGTERM', 'SIGKILL', 'SIGQUIT', 'SIGINT']) { | ||
| 46 | + const process = spawn('cmd'); | ||
| 47 | + process.on('exit', (code, signal) => { | ||
| 48 | + assert.strictEqual(code, null); | ||
| 49 | + assert.strictEqual(signal, sendSignal); | ||
| 50 | + }); | ||
| 51 | + process.kill(sendSignal); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + const process = spawn('cmd'); | ||
| 55 | + process.on('exit', (code, signal) => { | ||
| 56 | + assert.strictEqual(code, null); | ||
| 57 | + assert.strictEqual(signal, 'SIGKILL'); | ||
| 58 | + }); | ||
| 59 | + process.kill('SIGHUP'); | ||
| 60 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments