diff options
author | Bedis Nbiba <bedisnbiba@gmail.com> | 2024-05-19 19:52:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-19 14:52:03 -0400 |
commit | 927cbb5ecde7581fd80ce4c6ed013ba4e742d5df (patch) | |
tree | eafa5c953d633cdcdaf665b7636f987954c9614d | |
parent | 9e890399fc20ebd4d87cd490d84475309f57d56c (diff) |
fix: handle signal 0 in process.kill (#23473)
the last commit had a regression, where it removed this branch, I
haven't tested the code but I think it should work
---------
Signed-off-by: Bedis Nbiba <bedisnbiba@gmail.com>
-rw-r--r-- | ext/node/polyfills/process.ts | 4 | ||||
-rw-r--r-- | tests/unit_node/process_test.ts | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts index d9c953514..9c73f5a51 100644 --- a/ext/node/polyfills/process.ts +++ b/ext/node/polyfills/process.ts @@ -259,6 +259,10 @@ memoryUsage.rss = function (): number { // Returns a negative error code than can be recognized by errnoException function _kill(pid: number, sig: number): number { + // signal 0 does not exist in constants.os.signals, thats why it have to be handled explicitly + if (sig === 0) { + return op_node_process_kill(pid, 0); + } const maybeSignal = Object.entries(constants.os.signals).find(( [_, numericCode], ) => numericCode === sig); diff --git a/tests/unit_node/process_test.ts b/tests/unit_node/process_test.ts index 491a70bfc..0eadb0a16 100644 --- a/tests/unit_node/process_test.ts +++ b/tests/unit_node/process_test.ts @@ -243,6 +243,11 @@ Deno.test( args: ["eval", "setTimeout(() => {}, 10000)"], }).spawn(); + // kill with signal 0 should keep the process alive in linux (true means no error happened) + // windows ignore signals + if (Deno.build.os !== "windows") { + assertEquals(process.kill(p.pid, 0), true); + } process.kill(p.pid); await p.status; }, |