mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-10-05 08:16:55 +08:00
27 lines
410 B
Go
27 lines
410 B
Go
package stdin
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
"os/exec"
|
|
)
|
|
|
|
type pipeCloser struct {
|
|
io.Writer
|
|
io.Closer
|
|
cmd *exec.Cmd
|
|
}
|
|
|
|
func PipeCloser(cmd *exec.Cmd) (io.WriteCloser, error) {
|
|
stdin, err := cmd.StdinPipe()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return pipeCloser{stdin, stdin, cmd}, nil
|
|
}
|
|
|
|
func (p pipeCloser) Close() (err error) {
|
|
return errors.Join(p.Closer.Close(), p.cmd.Process.Kill(), p.cmd.Wait())
|
|
}
|