Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions crates/agent-gui/src-tauri/src/runtime/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -217,9 +217,13 @@ pub(crate) fn probe_process_start_time(_pid: u32) -> ProcessProbe {
ProcessProbe::Unknown
}

/// `ps -o etime=` 只有秒级精度,启动时间换算允许 ±2s 误差。超出即认为这个 pid 已
/// 被别的进程复用,不能再对它发信号。
#[cfg(unix)]
/// 启动时间比对的容差:超出即认为这个 pid 已被别的进程复用,不能再对它发信号。
///
/// unix 侧 `ps -o etime=` 只有秒级精度,换算出来的启动时间必然有抖动,所以这里必须
/// 留出宽容度;windows 侧 `GetProcessTimes` 直接给出创建时间,精确到 100ns,同样的
/// 宽容度只是稍宽一点,不会漏判 pid 复用。**这个常量必须在所有平台都可见**——它被
/// 非 `cfg` 门控的 `terminate_process_tree_by_pid_if_same` 使用,只在 unix 下定义会让
/// windows 构建直接报 E0425(CI 的 Rust 检查只跑 Linux,发现不了)。
const PID_START_TIME_TOLERANCE_MS: i64 = 2_000;

/// 按 pid 终止进程树,但先确认这个 pid 仍是当初启动的那个进程。
Expand Down
Loading