From 927cbb5ecde7581fd80ce4c6ed013ba4e742d5df Mon Sep 17 00:00:00 2001 From: Bedis Nbiba Date: Sun, 19 May 2024 19:52:03 +0100 Subject: [PATCH] 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 --- ext/node/polyfills/process.ts | 4 ++++ tests/unit_node/process_test.ts | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts index d9c9535145..9c73f5a515 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 491a70bfca..0eadb0a16b 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; },