mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-25 02:44:36 +00:00
Handle signals properly on Windows (#1123)
This commit is contained in:
parent
55bc5f0900
commit
13b0c68ed7
@ -22,6 +22,9 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#elif defined (_WIN32)
|
#elif defined (_WIN32)
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#define NOMINMAX
|
||||||
|
#include <windows.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -240,7 +243,10 @@ int main(int argc, char ** argv) {
|
|||||||
sigint_action.sa_flags = 0;
|
sigint_action.sa_flags = 0;
|
||||||
sigaction(SIGINT, &sigint_action, NULL);
|
sigaction(SIGINT, &sigint_action, NULL);
|
||||||
#elif defined (_WIN32)
|
#elif defined (_WIN32)
|
||||||
signal(SIGINT, sigint_handler);
|
auto console_ctrl_handler = [](DWORD ctrl_type) -> BOOL {
|
||||||
|
return (ctrl_type == CTRL_C_EVENT) ? (sigint_handler(SIGINT), true) : false;
|
||||||
|
};
|
||||||
|
SetConsoleCtrlHandler(static_cast<PHANDLER_ROUTINE>(console_ctrl_handler), true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fprintf(stderr, "%s: interactive mode on.\n", __func__);
|
fprintf(stderr, "%s: interactive mode on.\n", __func__);
|
||||||
@ -519,11 +525,6 @@ int main(int argc, char ** argv) {
|
|||||||
// potentially set color to indicate we are taking user input
|
// potentially set color to indicate we are taking user input
|
||||||
set_console_color(con_st, CONSOLE_COLOR_USER_INPUT);
|
set_console_color(con_st, CONSOLE_COLOR_USER_INPUT);
|
||||||
|
|
||||||
#if defined (_WIN32)
|
|
||||||
// Windows: must reactivate sigint handler after each signal
|
|
||||||
signal(SIGINT, sigint_handler);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (params.instruct) {
|
if (params.instruct) {
|
||||||
printf("\n> ");
|
printf("\n> ");
|
||||||
}
|
}
|
||||||
@ -607,10 +608,6 @@ int main(int argc, char ** argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined (_WIN32)
|
|
||||||
signal(SIGINT, SIG_DFL);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
llama_print_timings(ctx);
|
llama_print_timings(ctx);
|
||||||
llama_free(ctx);
|
llama_free(ctx);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user