處理作業系統訊號
⚠️ Windows 僅支援監聽 SIGINT 和 SIGBREAK,Deno v1.23 起。
概念
- Deno.addSignalListener() 可用於擷取和監控作業系統訊號。
- Deno.removeSignalListener() 可用於停止監控訊號。
設定作業系統訊號監聽器
處理作業系統訊號的 API 模仿已經很熟悉的 addEventListener
和 removeEventListener
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 existing immediately.
setTimeout(() => {}, 5000);
// Stop listening for a signal after 1s.
setTimeout(() => {
Deno.removeSignalListener("SIGINT", sigIntHandler);
}, 1000);
使用下列指令執行
deno run signal_listeners.ts