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)
    }
}

How can I host my public package on my personal domain?

<blockquote class="reddit-card" > <a href="https://www.reddit.com/r/golang/comments/mn2zsa/how_can_i_host_my_public_package_on_my_pe...

阅读全文

golang skia demo

skia build 1. 下载安装 depot_tools git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git' export PATH="${PWD}/depot_tools:${...

阅读全文

Go 语言编译器的 “//go:” 详解

前言 C 语言的 #include 一上来不太好说明白 Go 语言里 //go: 是什么,我们先来看下非常简单,也是几乎每个写代码的人都知道的东西:C 语言的 #include。 我...

阅读全文

欢迎留言