summaryrefslogtreecommitdiff
path: root/internal/task/command_unix.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-22 09:21:06 +0300
committerPaul Buetow <paul@buetow.org>2026-06-22 09:21:06 +0300
commit1888b70cf4981cabaef0b6e33e0ae9982d3a788e (patch)
tree5cec4e67a05547b61ed03ffe7709902a80da3c35 /internal/task/command_unix.go
parent02f5f1419c4cb5fccc47a0ce4dbf3957e73b0e79 (diff)
fix task export timeout for lq0
Diffstat (limited to 'internal/task/command_unix.go')
-rw-r--r--internal/task/command_unix.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/internal/task/command_unix.go b/internal/task/command_unix.go
new file mode 100644
index 0000000..25e7fa3
--- /dev/null
+++ b/internal/task/command_unix.go
@@ -0,0 +1,26 @@
+//go:build unix
+
+package task
+
+import (
+ "errors"
+ "os"
+ "os/exec"
+ "syscall"
+)
+
+func configureCommandContext(cmd *exec.Cmd) {
+ cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
+ cmd.Cancel = func() error {
+ if cmd.Process == nil {
+ return os.ErrProcessDone
+ }
+ if err := syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL); err != nil {
+ if errors.Is(err, syscall.ESRCH) {
+ return os.ErrProcessDone
+ }
+ return err
+ }
+ return nil
+ }
+}