diff --git a/src/cli/daemon_cmd.rs b/src/cli/daemon_cmd.rs index 03f1127..82c32d0 100644 --- a/src/cli/daemon_cmd.rs +++ b/src/cli/daemon_cmd.rs @@ -6,7 +6,7 @@ use crate::cli::transport; pub fn cmd_daemon(cmd: DaemonCommands, tcp_addr: Option<&str>) -> Result<()> { match cmd { DaemonCommands::Status => cmd_status(tcp_addr), - DaemonCommands::Stop => cmd_stop(), + DaemonCommands::Stop => cmd_stop(tcp_addr), DaemonCommands::Logs { follow, lines } => cmd_logs(follow, lines), DaemonCommands::Start { tcp } => crate::daemon::run_start(tcp), } @@ -29,7 +29,17 @@ fn cmd_status(tcp_addr: Option<&str>) -> Result<()> { Ok(()) } -fn cmd_stop() -> Result<()> { +fn cmd_stop(tcp_addr: Option<&str>) -> Result<()> { + // TCP daemon is a separate process — cannot stop via PID file + if let Some(addr) = tcp_addr { + eprintln!( + "⚠ TCP daemon ({}) 是一个独立进程,无法通过 `wx daemon stop` 停止。\n\ + 请手动关闭该进程(例如 kill / taskkill PID)。", + addr + ); + return Ok(()); + } + let pid_path = config::pid_path(); if !pid_path.exists() { println!("daemon 未运行");