跳至主要内容

处理操作系统信号

您可以使用 `Deno.addSignalListener` 函数监听操作系统信号。这允许您在接收到 `SIGINT` 信号时执行操作,例如优雅地关闭服务器。

在 Github 上编辑
console.log("Counting seconds...");

let i = 0;
我们将信号处理函数隔离,以便以后可以将其删除。
function sigIntHandler() {
  console.log("interrupted! your number was", i);
  Deno.exit();
}
然后,我们可以监听 `SIGINT` 信号,该信号在用户按下 Ctrl+C 时发送。
Deno.addSignalListener("SIGINT", sigIntHandler);
在我们等待信号时,我们可以执行其他操作,例如计算秒数或启动服务器。
const interval = setInterval(() => {
  i++;
}, 1000);
并且,在 10 秒后,我们可以退出并删除信号监听器。
setTimeout(() => {
  clearInterval(interval);
  Deno.removeSignalListener("SIGINT", sigIntHandler);
  console.log("done! it has been 10 seconds");
}, 10_000);

运行 此示例,使用 Deno CLI 在本地运行。

deno run https://docs.deno.org.cn/examples/os-signals.ts