From: Xuan Son Nguyen Date: Wed, 28 Feb 2024 08:55:37 +0000 (+0100) Subject: server : hit Ctrl+C twice to exit (#5734) X-Git-Tag: upstream/0.0.4488~2199 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=a693bea1e6762a17b78b6ddf4611e54136941ea2;p=pkg%2Fggml%2Fsources%2Fllama.cpp server : hit Ctrl+C twice to exit (#5734) * server: twice ctrl+C to exit * std::atomic_flag * sigint: message * sigint: stderr * Update examples/server/server.cpp Co-authored-by: Jared Van Bortel --------- Co-authored-by: Jared Van Bortel --- diff --git a/examples/server/server.cpp b/examples/server/server.cpp index 6b3ee531..080fa9bd 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -2772,7 +2772,16 @@ static void append_to_generated_text_from_generated_token_probs(llama_server_con } std::function shutdown_handler; -inline void signal_handler(int signal) { shutdown_handler(signal); } +std::atomic_flag is_terminating = ATOMIC_FLAG_INIT; +inline void signal_handler(int signal) { + if (is_terminating.test_and_set()) { + // in case it hangs, we can force terminate the server by hitting Ctrl+C twice + // this is for better developer experience, we can remove when the server is stable enough + fprintf(stderr, "Received second interrupt, terminating immediately.\n"); + exit(1); + } + shutdown_handler(signal); +} int main(int argc, char **argv) {