One of the most frustrating things when you start with go is that fact that IO is blocking. So for example today I needed to spawn a process and read the stdout, easy right? 1 2 3 4 5 6 7 8 9 10 11 12 13 cmd := exec.Command("tail", "-f", "/tmp/matt.txt") stdout, err := cmd.StdoutPipe() if err != nil { log.Fatal(err) } if err := cmd.Start(); err != nil { log.Fatal(err) } //Ok here is the read reade