10-25 1,158 views
package main
import (
"bufio"
"bytes"
"fmt"
"os"
"os/exec"
"time"
)
var cmd *exec.Cmd = exec.Command("TyphoonSocksClient", "0.0.0.0", "16937", "0", "1.1.1.1", "16935", "600", "1024", "10240", "0", "-1", "57d7ccc66356e")
func main() {
t4()
}
func t0() {
var out bytes.Buffer
cmd.Stdout = os.Stdout
fmt.Println("##### cmd.Start() ######")
go func() {
for {
time.Sleep(2 * time.Second)
line, err := out.ReadString('\n')
fmt.Println(line, err)
}
}()
cmd.Run()
}
func t5() {
}
func t4() {
// docker build current directory
// cmdName := "docker"
// cmdArgs := []string{"build", "."}
// cmd := exec.Command(cmdName, cmdArgs...)
cmdReader, err := cmd.StdoutPipe()
if err != nil {
fmt.Fprintln(os.Stderr, "Error creating StdoutPipe for Cmd", err)
os.Exit(1)
}
scanner := bufio.NewScanner(cmdReader)
go func() {
for scanner.Scan() {
fmt.Printf("docker build out | %s\n", scanner.Text())
}
}()
err = cmd.Start()
if err != nil {
fmt.Fprintln(os.Stderr, "Error starting Cmd", err)
os.Exit(1)
}
err = cmd.Wait()
if err != nil {
fmt.Fprintln(os.Stderr, "Error waiting for Cmd", err)
os.Exit(1)
}
}
func t3() {
var out bytes.Buffer
cmd.Stdout = &out
fmt.Println("##### cmd.Start() ######")
go func() {
for {
time.Sleep(2 * time.Second)
line, err := out.ReadString('\n')
fmt.Println(line, err)
}
}()
cmd.Run()
}
func t2() {
var out bytes.Buffer
cmd.Stdout = &out
fmt.Println("##### cmd.Start() ######")
cmd.Start()
for {
time.Sleep(2 * time.Second)
line, err := out.ReadString('\n')
fmt.Println(line, err)
}
}
func t1() {
// cmd.Stdout = os.Stdout
var out bytes.Buffer
cmd.Stdout = &out
fmt.Println("###########")
// stdout, _ := cmd.StdoutPipe()
// defer stdout.Close()
// br := bufio.NewReader(stdout)
// cmd := exec.Command("cmd", "args")
// stdout, _ := cmd.StdoutPipe()
cmd.Start()
// r := bufio.NewReader(stdout)
// line, _, _ := r.ReadLine()
// fmt.Println(line)
// go func() {
// fmt.Println("for...")
// for {
// fmt.Println("sleep")
// time.Sleep(1 * time.Second)
// fmt.Println("ReadString")
// // line, err := br.ReadString('\n')
// var v []byte
// line, err := cmd.Stdout.Write(v)
// fmt.Println("ReadString end")
// if err != nil {
// fmt.Println("err: ", err)
// continue
// }
// fmt.Println(line)
// fmt.Println(string(v))
// }
// }()
// fmt.Println("######## run #######")
// cmd.Run()
for {
time.Sleep(5 * time.Second)
}
}