46 lines
824 B
Go
46 lines
824 B
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os/exec"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
cmd := exec.Command("configui", "-p", "main.go")
|
|
out, _ := cmd.StdoutPipe()
|
|
stderr, _ := cmd.StderrPipe()
|
|
cmd.Start()
|
|
defer cmd.Process.Kill()
|
|
fmt.Println("start: ", cmd.Args, ", pid: ", cmd.Process.Pid)
|
|
<-time.After(time.Second * 1)
|
|
var outlock sync.Mutex
|
|
scanner := bufio.NewScanner(out)
|
|
go func() {
|
|
for {
|
|
<-time.After(time.Second)
|
|
fmt.Println("Usage: ", cmd.ProcessState.SysUsage())
|
|
}
|
|
}()
|
|
go func() {
|
|
for scanner.Scan() {
|
|
m := scanner.Text()
|
|
outlock.Lock()
|
|
fmt.Println(m)
|
|
outlock.Unlock()
|
|
}
|
|
}()
|
|
scannererr := bufio.NewScanner(stderr)
|
|
go func() {
|
|
for scannererr.Scan() {
|
|
m := scannererr.Text()
|
|
outlock.Lock()
|
|
fmt.Println(m)
|
|
outlock.Unlock()
|
|
}
|
|
}()
|
|
<-time.After(time.Second * 20)
|
|
}
|