7.11 处理操作系统信号

此程序是不稳定的 Deno 功能。了解有关不稳定特征的更多内容。

概念

  • 使用该标志访问 Deno 中的新功能或不稳定功能。--unstable
  • Deno.signal可用于捕获和监控操作系统信号。
  • 使用 Deno.signaldispose()功能停止监视信号。

异步迭代器示例

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

/**
 * async-iterator-signal.ts
 */
console.log("Press Ctrl-C to trigger a SIGINT signal");
for await (const _ of Deno.signal(Deno.Signal.SIGINT)) {
  console.log("interrupted!");
  Deno.exit();
}

运行:

deno run --unstable async-iterator-signal.ts

基于Promise的示例

Deno.signal()也作为一个Promise工作:

/**
 * promise-signal.ts
 */
console.log("Press Ctrl-C to trigger a SIGINT signal");
await Deno.signal(Deno.Signal.SIGINT);
console.log("interrupted!");
Deno.exit();

运行:

deno run --unstable promise-signal.ts

停止监控信号

如果您想停止监控信号,您可以使用信号对象的方法:dispose()

/**
 * dispose-signal.ts
 */
const sig = Deno.signal(Deno.Signal.SIGINT);
setTimeout(() => {
  sig.dispose();
  console.log("No longer watching SIGINT signal");
}, 5000);

console.log("Watching SIGINT signals");
for await (const _ of sig) {
  console.log("interrupted");
}

运行:

deno run --unstable dispose-signal.ts

当调用sig.dispose()时,上述for-await循环在5秒后退出。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容