mirror of
https://github.com/Jguer/yay
synced 2024-10-05 23:59:13 +00:00
fix(exe): fix timeout of OSRunner.Capture()
kill all child processes
This commit is contained in:
parent
182f4c7f6c
commit
bb50b4079f
|
@ -6,6 +6,7 @@ import (
|
|||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/Jguer/yay/v10/pkg/text"
|
||||
|
@ -35,6 +36,8 @@ func (r *OSRunner) Capture(cmd *exec.Cmd, timeout int64) (stdout, stderr string,
|
|||
|
||||
cmd.Stdout = &outbuf
|
||||
cmd.Stderr = &errbuf
|
||||
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
|
||||
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
stdout = strings.TrimSpace(outbuf.String())
|
||||
|
@ -44,7 +47,7 @@ func (r *OSRunner) Capture(cmd *exec.Cmd, timeout int64) (stdout, stderr string,
|
|||
|
||||
if timeout != 0 {
|
||||
timer = time.AfterFunc(time.Duration(timeout)*time.Second, func() {
|
||||
err = cmd.Process.Kill()
|
||||
err = syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)
|
||||
if err != nil {
|
||||
text.Errorln(err)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue