mirror of
https://github.com/cheikh2shift/godex.git
synced 2026-10-21 02:29:56 -05:00
Added Windows support in setProcessGroup
This commit is contained in:
1 parent
bff69f9c3b
commit
dc43d6dc51
3 files changed
+19
-4
No files matched your search
@@ -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
|
||||
}
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user