Add buffer to pipe reader

This commit is contained in:
Alexey Khit
2023-08-16 16:32:09 +03:00
parent 8fbfccd024
commit e1be2d9e48
+8 -4
View File
@@ -1,9 +1,11 @@
package exec
import (
"github.com/AlexxIT/go2rtc/pkg/core"
"bufio"
"io"
"os/exec"
"github.com/AlexxIT/go2rtc/pkg/core"
)
// PipeCloser - return StdoutPipe that Kill cmd on Close call
@@ -13,14 +15,16 @@ func PipeCloser(cmd *exec.Cmd) (io.ReadCloser, error) {
return nil, err
}
return pipeCloser{stdout, cmd}, nil
// add buffer for pipe reader to reduce syscall
return pipeCloser{bufio.NewReaderSize(stdout, core.BufferSize), stdout, cmd}, nil
}
type pipeCloser struct {
io.ReadCloser
io.Reader
io.Closer
cmd *exec.Cmd
}
func (p pipeCloser) Close() error {
return core.Any(p.ReadCloser.Close(), p.cmd.Process.Kill(), p.cmd.Wait())
return core.Any(p.Closer.Close(), p.cmd.Process.Kill(), p.cmd.Wait())
}