Added Windows support in setProcessGroup

This commit is contained in:
Cheikh Seck committed 2026-04-04 13:48:43 +00:00
1 parent bff69f9c3b
commit dc43d6dc51
3 files changed
+19 -4

No files matched your search

+1 -4
View File
@@ -11,7 +11,6 @@ import (
"os/exec"
"path/filepath"
"regexp"
"runtime"
"strings"
"sync"
"syscall"
@@ -430,9 +429,7 @@ func (s *BashServer) runBackgroundJob(ctx context.Context, command string, timeo
jobID := s.jobTracker.Add(job)
cmd := exec.CommandContext(jobCtx, "sh", "-c", command)
if runtime.GOOS != "windows" {
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
}
setProcessGroup(cmd)
if workingDir != "" {
cmd.Dir = workingDir
}
+7
View File
@@ -32,6 +32,13 @@ func killProcessGroup(targetPID int, removeTracking func()) (string, error) {
return "", nil
}
func setProcessGroup(cmd *exec.Cmd) {
if cmd == nil {
return
}
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
}
// GetUnixTools returns the list of tools that are only available on Unix systems (mac, linux)
func GetUnixTools() []Tool {
return []Tool{
+11
View File
@@ -7,6 +7,7 @@ import (
"errors"
"fmt"
"os"
"os/exec"
"syscall"
)
@@ -28,6 +29,16 @@ func killProcessGroup(targetPID int, removeTracking func()) (string, error) {
return fmt.Sprintf("Killed process %d", targetPID), nil
}
func setProcessGroup(cmd *exec.Cmd) {
if cmd == nil {
return
}
if cmd.SysProcAttr == nil {
cmd.SysProcAttr = &syscall.SysProcAttr{}
}
cmd.SysProcAttr.CreationFlags |= syscall.CREATE_NEW_PROCESS_GROUP
}
// GetUnixTools returns an empty list on Windows (not supported)
func GetUnixTools() []Tool {