Terminate Windows non-TTY processes on interrupt (#35655)

## Why

Windows non-TTY exec sessions reported interrupts as unsupported, so sending
Ctrl-C through `write_stdin` did not stop the running process.

## What changed

- Route interrupt requests for Windows non-TTY processes through their existing
  termination callback, including pipe-backed processes.
- Track whether driver-backed Windows sessions use a TTY so PTY interrupts keep
  their existing behavior.
- Consume the terminator after a successful interrupt to avoid invoking it again
  when the process handle is dropped.

## Testing

Added coverage for local and remote exec-server sessions, unified exec, pipe
fallbacks, and legacy Windows sandbox processes.

GitOrigin-RevId: 34504d01f091ef57bb961e98ad5a8d9f1acee4ee
This commit is contained in:
iceweasel-oai authored and copyberry committed 2026-07-27 18:37:11 +00:00
1 parent 9f82ffed1b
commit 6b23635a7e
10 files changed
+151 -49

No files matched your search

+6 -1
View File
@@ -48,7 +48,12 @@ impl ChildTerminator for PipeChildTerminator {
crate::process_group::interrupt_process_group(self.process_group_id)
}
#[cfg(not(unix))]
#[cfg(windows)]
{
self.kill()
}
#[cfg(not(any(unix, windows)))]
{
Err(crate::process::unsupported_signal(signal))
}