此程序是不稳定的 Deno 功能。了解有关不稳定特征的更多内容。
概念
- 使用该标志访问 Deno 中的新功能或不稳定功能。
--unstable
- Deno.signal可用于捕获和监控操作系统信号。
- 使用 Deno.signal的
dispose()
功能停止监视信号。
异步迭代器示例
您可以使用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秒后退出。