From f299c93242c1543602a3a7abc5af73f7c46f680e Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 16 Mar 2025 00:49:43 +0800 Subject: [PATCH] Handle SIGINT --- main.ha | 11 ++++++++++- diff --git a/main.ha b/main.ha index cf2099a794587eac1265bbe00ba89d8286939796..d133c7bcd7c8266cd10a4e7a92c837f779534f54 100644 --- a/main.ha +++ b/main.ha @@ -16,6 +16,7 @@ use memio; use io; use fmt; use bufio; +use unix::signal; const usage: [_]getopt::help = [ "Lindenii Forge Server", @@ -24,7 +25,15 @@ ]; let static_fs: nullable *fs::fs = null; +let running: bool = true; + +export fn sigint_handler(sig: signal::sig, info: *signal::siginfo, ucontext: *opaque) void = { + running = false; +}; + export fn main() void = { + signal::handle(signal::sig::INT, &sigint_handler, signal::flag::NONE, null); + const cmd = getopt::parse(os::args, usage...); defer getopt::finish(&cmd); @@ -48,7 +57,7 @@ case => abort("failure while listening"); }; defer http::server_finish(server); - for (true) { + for (running) { const serv_req = match (http::serve(server)) { case let this: *http::server_request => yield this; -- 2.48.1