deno.com
本页内容

处理操作系统信号

⚠️ 截至 Deno v1.23,Windows 仅支持监听 SIGINT 和 SIGBREAK。

概念 跳转到标题

设置操作系统信号监听器 跳转到标题

用于处理操作系统信号的 API 仿照了大家熟悉的 addEventListenerremoveEventListener API。

⚠️ 请注意,监听操作系统信号不会阻止事件循环完成,即,如果没有更多待处理的异步操作,进程将退出。

您可以使用 Deno.addSignalListener() 函数来处理操作系统信号

add_signal_listener.ts
console.log("Press Ctrl-C to trigger a SIGINT signal");

Deno.addSignalListener("SIGINT", () => {
  console.log("interrupted!");
  Deno.exit();
});

// Add a timeout to prevent process exiting immediately.
setTimeout(() => {}, 5000);

运行方式:

deno run add_signal_listener.ts

您可以使用 Deno.removeSignalListener() 函数来注销之前添加的信号处理程序。

signal_listeners.ts
console.log("Press Ctrl-C to trigger a SIGINT signal");

const sigIntHandler = () => {
  console.log("interrupted!");
  Deno.exit();
};
Deno.addSignalListener("SIGINT", sigIntHandler);

// Add a timeout to prevent process exiting immediately.
setTimeout(() => {}, 5000);

// Stop listening for a signal after 1s.
setTimeout(() => {
  Deno.removeSignalListener("SIGINT", sigIntHandler);
}, 1000);

运行方式:

deno run signal_listeners.ts

您找到所需的内容了吗?

隐私政策