summaryrefslogtreecommitdiff
path: root/cli/signal.rs
diff options
context:
space:
mode:
authorKevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com>2019-04-21 18:26:56 -0700
committerRyan Dahl <ry@tinyclouds.org>2019-04-21 21:26:56 -0400
commit1d4b92ac85d8c850270ca859f928404c72c0a49a (patch)
tree2f45ea65a3a3c5879fe7b16cacfd5624d86764cd /cli/signal.rs
parent9dfebbc9496138efbeedc431068f41662c780f3e (diff)
Add Deno.kill(pid, signo) and process.kill(signo) (Unix only) (#2177)
Diffstat (limited to 'cli/signal.rs')
-rw-r--r--cli/signal.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/cli/signal.rs b/cli/signal.rs
new file mode 100644
index 000000000..7d67ba743
--- /dev/null
+++ b/cli/signal.rs
@@ -0,0 +1,20 @@
+#[cfg(unix)]
+use nix::sys::signal::{kill as unix_kill, Signal};
+#[cfg(unix)]
+use nix::unistd::Pid;
+
+use crate::errors::DenoResult;
+
+#[cfg(unix)]
+pub fn kill(pid: i32, signo: i32) -> DenoResult<()> {
+ use crate::errors::DenoError;
+ let sig = Signal::from_c_int(signo)?;
+ unix_kill(Pid::from_raw(pid), Option::Some(sig)).map_err(DenoError::from)
+}
+
+#[cfg(not(unix))]
+pub fn kill(_pid: i32, _signal: i32) -> DenoResult<()> {
+ // NOOP
+ // TODO: implement this for windows
+ Ok(())
+}