feat: Add signal related params to exec

This commit is contained in:
dadav
2024-01-10 20:20:00 +01:00
parent 4b62a6e34f
commit 152719441e
6 changed files with 358 additions and 156 deletions
+11 -4
View File
@@ -1,3 +1,5 @@
//go:build !linux
package exec
import (
@@ -9,22 +11,27 @@ import (
)
// PipeCloser - return StdoutPipe that Kill cmd on Close call
func PipeCloser(cmd *exec.Cmd) (io.ReadCloser, error) {
func PipeCloser(cmd *exec.Cmd, params *Params) (io.ReadCloser, error) {
stdout, err := cmd.StdoutPipe()
if err != nil {
return nil, err
}
// add buffer for pipe reader to reduce syscall
return pipeCloser{bufio.NewReaderSize(stdout, core.BufferSize), stdout, cmd}, nil
return pipeCloser{bufio.NewReaderSize(stdout, core.BufferSize), stdout, cmd, params}, nil
}
type pipeCloser struct {
io.Reader
io.Closer
cmd *exec.Cmd
cmd *exec.Cmd
params *Params
}
func (p pipeCloser) Close() error {
return core.Any(p.Closer.Close(), p.cmd.Process.Kill(), p.cmd.Wait())
finished := make(chan bool)
err := core.Any(p.Closer.Close(), p.cmd.Process.Kill(), p.cmd.Wait())
finished <- true
return err
}