Skip to content

Instantly share code, notes, and snippets.

@rms1000watt
Created August 5, 2019 20:48
Show Gist options
  • Save rms1000watt/699af4faf713018063d2b6be6a4d39d9 to your computer and use it in GitHub Desktop.
Save rms1000watt/699af4faf713018063d2b6be6a4d39d9 to your computer and use it in GitHub Desktop.
Golang exec command with stdout, stderr, stdin
package main
import (
"os"
"os/exec"
)
func main() {
var name string
var args []string
var envVars []string
command := exec.Command(name, args...)
command.Env = append(os.Environ(), envVars...)
command.Stdout = os.Stdout
command.Stderr = os.Stderr
command.Stdin = os.Stdin
if err := command.Start(); err != nil {
fmt.Println("Failed starting command: ", err)
return err
}
if err := command.Wait(); err != nil {
if exiterr, ok := err.(*exec.ExitError); ok {
if status, ok := exiterr.Sys().(syscall.WaitStatus); ok {
fmt.Println("Exit Status: ", status.ExitStatus())
return err
}
}
fmt.Println("Failed to wait for command: ", err)
return err
}
return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment