@@ -153,32 +153,45 @@ pub async fn start_watch(config: &KnowledgeConfig) -> Result<()> {
153153 // --- Signal handling (SIGINT + SIGTERM) ---
154154 let sig_sender = shutdown_tx;
155155 tokio:: spawn ( async move {
156- use tokio:: signal:: unix:: { SignalKind , signal} ;
156+ #[ cfg( unix) ]
157+ {
158+ use tokio:: signal:: unix:: { SignalKind , signal} ;
157159
158- let mut sigint = match signal ( SignalKind :: interrupt ( ) ) {
159- Ok ( s) => s,
160- Err ( e) => {
161- eprintln ! ( "[kqs] Failed to register SIGINT handler: {e}" ) ;
162- return ;
163- }
164- } ;
165- let mut sigterm = match signal ( SignalKind :: terminate ( ) ) {
166- Ok ( s) => s,
167- Err ( e) => {
168- eprintln ! ( "[kqs] Failed to register SIGTERM handler: {e}" ) ;
169- return ;
170- }
171- } ;
160+ let mut sigint = match signal ( SignalKind :: interrupt ( ) ) {
161+ Ok ( s) => s,
162+ Err ( e) => {
163+ eprintln ! ( "[kqs] Failed to register SIGINT handler: {e}" ) ;
164+ return ;
165+ }
166+ } ;
167+ let mut sigterm = match signal ( SignalKind :: terminate ( ) ) {
168+ Ok ( s) => s,
169+ Err ( e) => {
170+ eprintln ! ( "[kqs] Failed to register SIGTERM handler: {e}" ) ;
171+ return ;
172+ }
173+ } ;
172174
173- tokio:: select! {
174- _ = sigint. recv( ) => {
175- eprintln!( "[kqs] Received SIGINT — shutting down..." ) ;
176- let _ = sig_sender. send( ( ) ) ;
175+ tokio:: select! {
176+ _ = sigint. recv( ) => {
177+ eprintln!( "[kqs] Received SIGINT — shutting down..." ) ;
178+ let _ = sig_sender. send( ( ) ) ;
179+ }
180+ _ = sigterm. recv( ) => {
181+ eprintln!( "[kqs] Received SIGTERM — shutting down..." ) ;
182+ let _ = sig_sender. send( ( ) ) ;
183+ }
177184 }
178- _ = sigterm. recv( ) => {
179- eprintln!( "[kqs] Received SIGTERM — shutting down..." ) ;
180- let _ = sig_sender. send( ( ) ) ;
185+ }
186+
187+ #[ cfg( windows) ]
188+ {
189+ if let Err ( e) = tokio:: signal:: ctrl_c ( ) . await {
190+ eprintln ! ( "[kqs] Failed to register Ctrl+C handler: {e}" ) ;
191+ return ;
181192 }
193+ eprintln ! ( "[kqs] Received Ctrl+C — shutting down..." ) ;
194+ let _ = sig_sender. send ( ( ) ) ;
182195 }
183196 } ) ;
184197
0 commit comments