summaryrefslogtreecommitdiffstats
path: root/crates/common/tedge_utils/src/signals.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/common/tedge_utils/src/signals.rs')
-rw-r--r--crates/common/tedge_utils/src/signals.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/crates/common/tedge_utils/src/signals.rs b/crates/common/tedge_utils/src/signals.rs
new file mode 100644
index 00000000..7b50cd91
--- /dev/null
+++ b/crates/common/tedge_utils/src/signals.rs
@@ -0,0 +1,16 @@
+use std::io;
+
+#[cfg(not(windows))]
+use tokio::signal::unix::{signal, SignalKind};
+
+#[cfg(not(windows))]
+pub async fn interrupt() -> io::Result<()> {
+ let mut signals = signal(SignalKind::interrupt())?;
+ let _ = signals.recv().await;
+ Ok(())
+}
+
+#[cfg(windows)]
+pub async fn interrupt() -> io::Result<()> {
+ tokio::signal::ctrl_c().await
+}