简中文档
On this page

处理操作系统信号

⚠️ 从 Deno v1.23 开始,Windows 仅支持监听 SIGINT 和 SIGBREAK。

概念 Jump to heading

设置操作系统信号监听器 Jump to heading

处理操作系统信号的 API 是基于已经熟悉的 addEventListenerremoveEventListener API 模型化的。

⚠️ 请注意,监听操作系统信号并不会阻止事件循环完成,即如果没有其他挂起的异步操作,进程将退出。

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

add_signal_listener.ts
console.log("按 Ctrl-C 触发 SIGINT 信号");

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

// 添加一个超时以防止进程立即退出。
setTimeout(() => {}, 5000);

运行命令:

deno run add_signal_listener.ts

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

signal_listeners.ts
console.log("按 Ctrl-C 触发 SIGINT 信号");

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

// 添加一个超时以防止进程立即退出。
setTimeout(() => {}, 5000);

// 在 1 秒后停止监听信号。
setTimeout(() => {
  Deno.removeSignalListener("SIGINT", sigIntHandler);
}, 1000);

运行命令:

deno run signal_listeners.ts

你找到了你需要的东西吗?

编辑此页面
隐私政策