mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-31 08:51:55 +00:00 
			
		
		
		
	add SIGINT support for _WIN32 environments (#120)
* add SIGINT support for _WIN32 environments * perhaps more consistent
This commit is contained in:
		
							
								
								
									
										11
									
								
								main.cpp
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								main.cpp
									
									
									
									
									
								
							| @@ -14,6 +14,8 @@ | |||||||
| #if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__)) | #if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__)) | ||||||
| #include <signal.h> | #include <signal.h> | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
|  | #elif defined (_WIN32) | ||||||
|  | #include <signal.h> | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #define ANSI_COLOR_RED     "\x1b[31m" | #define ANSI_COLOR_RED     "\x1b[31m" | ||||||
| @@ -755,7 +757,7 @@ bool llama_eval( | |||||||
|  |  | ||||||
| static bool is_interacting = false; | static bool is_interacting = false; | ||||||
|  |  | ||||||
| #if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__)) | #if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__)) || defined (_WIN32) | ||||||
| void sigint_handler(int signo) { | void sigint_handler(int signo) { | ||||||
|     printf(ANSI_COLOR_RESET); |     printf(ANSI_COLOR_RESET); | ||||||
|     if (signo == SIGINT) { |     if (signo == SIGINT) { | ||||||
| @@ -865,6 +867,8 @@ int main(int argc, char ** argv) { | |||||||
|         sigemptyset (&sigint_action.sa_mask); |         sigemptyset (&sigint_action.sa_mask); | ||||||
|         sigint_action.sa_flags = 0; |         sigint_action.sa_flags = 0; | ||||||
|         sigaction(SIGINT, &sigint_action, NULL); |         sigaction(SIGINT, &sigint_action, NULL); | ||||||
|  | #elif defined (_WIN32) | ||||||
|  |         signal(SIGINT, sigint_handler); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|         fprintf(stderr, "%s: interactive mode on.\n", __func__); |         fprintf(stderr, "%s: interactive mode on.\n", __func__); | ||||||
| @@ -894,7 +898,7 @@ int main(int argc, char ** argv) { | |||||||
|  |  | ||||||
|     if (params.interactive) { |     if (params.interactive) { | ||||||
|         fprintf(stderr, "== Running in interactive mode. ==\n" |         fprintf(stderr, "== Running in interactive mode. ==\n" | ||||||
| #if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__)) | #if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__)) || defined (_WIN32) | ||||||
|                " - Press Ctrl+C to interject at any time.\n" |                " - Press Ctrl+C to interject at any time.\n" | ||||||
| #endif | #endif | ||||||
|                " - Press Return to return control to LLaMa.\n" |                " - Press Return to return control to LLaMa.\n" | ||||||
| @@ -1039,6 +1043,9 @@ int main(int argc, char ** argv) { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | #if defined (_WIN32) | ||||||
|  |     signal(SIGINT, SIG_DFL); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     // report timing |     // report timing | ||||||
|     { |     { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Rickey Bowers Jr
					Rickey Bowers Jr