Skip to content

Instantly share code, notes, and snippets.

@fengyfei
Created June 19, 2022 05:31
Show Gist options
  • Save fengyfei/61942ad589b15d3112cde0b31ae38d0b to your computer and use it in GitHub Desktop.
Save fengyfei/61942ad589b15d3112cde0b31ae38d0b to your computer and use it in GitHub Desktop.
[Go] Command Output
package main
import(
"log"
"os/exec"
"io"
)
func main() {
process := exec.Command("ls", "-la")
stdout, err := process.StdoutPipe()
if err != nil {
log.Fatal(err)
}
if err = process.Start(); err != nil {
log.Fatal(err)
}
done := make(chan struct{}, 1)
go func () {
outputs := make([]byte, 512)
line := make([]byte, 80)
for {
if n, err := stdout.Read(line); err != nil {
if err == io.EOF {
if n > 0 {
outputs = append(outputs, line...)
}
break
}
log.Fatal(err)
}
outputs = append(outputs, line...)
line = line[0:]
}
log.Print(string(outputs))
done <- struct{}{}
}()
if err = process.Wait(); err != nil {
log.Fatal(err)
}
<-done
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment