|
- package internal
-
- import (
- "bytes"
- "os/exec"
- "time"
- )
-
- // CombinedOutputTimeout runs the given command with the given timeout and
- // returns the combined output of stdout and stderr.
- // If the command times out, it attempts to kill the process.
- func CombinedOutputTimeout(c *exec.Cmd, timeout time.Duration) ([]byte, error) {
- var b bytes.Buffer
- c.Stdout = &b
- c.Stderr = &b
- if err := c.Start(); err != nil {
- return nil, err
- }
- err := WaitTimeout(c, timeout)
- return b.Bytes(), err
- }
-
- // StdOutputTimeout runs the given command with the given timeout and
- // returns the output of stdout.
- // If the command times out, it attempts to kill the process.
- func StdOutputTimeout(c *exec.Cmd, timeout time.Duration) ([]byte, error) {
- var b bytes.Buffer
- c.Stdout = &b
- c.Stderr = nil
- if err := c.Start(); err != nil {
- return nil, err
- }
- err := WaitTimeout(c, timeout)
- return b.Bytes(), err
- }
-
- // RunTimeout runs the given command with the given timeout.
- // If the command times out, it attempts to kill the process.
- func RunTimeout(c *exec.Cmd, timeout time.Duration) error {
- if err := c.Start(); err != nil {
- return err
- }
- return WaitTimeout(c, timeout)
- }
|