pinebook-tests/random-output/shell.go

59 lines
1.2 KiB
Go
Raw Normal View History

package main
import "strings"
import "time"
import "os"
import "os/exec"
import "bufio"
import "log"
// import "io"
// import "fmt"
// import "reflect"
// import "github.com/davecgh/go-spew/spew"
import "github.com/svent/go-nbreader"
func ping(hostname string, count int) {
cmdName := "ping " + hostname
cmdArgs := strings.Fields(cmdName)
cmd := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...)
stdout, _ := cmd.StdoutPipe()
stderr, _ := cmd.StderrPipe()
cmd.Start()
f := bufio.NewWriter(os.Stdout)
newreader := bufio.NewReader(stdout)
nbr := nbreader.NewNBReader(newreader, 1024)
newerrreader := bufio.NewReader(stderr)
nbrerr := nbreader.NewNBReader(newerrreader, 1024)
for {
time.Sleep(2 * time.Millisecond) // only check the buffer 500 times a second
// log.Println("sleep done")
oneByte := make([]byte, 10)
count, err := nbr.Read(oneByte)
if (err != nil) {
log.Println("Read() count = ", count, "err = ", err)
}
f.Write([]byte(string(oneByte)))
f.Flush()
oneByte = make([]byte, 10)
count, err = nbrerr.Read(oneByte)
if (err != nil) {
log.Println("Read() count = ", count, "err = ", err)
}
f.Write([]byte(string(oneByte)))
f.Flush()
}
cmd.Wait()
}