📙Go语言:进阶大全

Go语言:读取CMD子进程输出信息

2019-03-22  本文已影响2923人  白祤星

代码示例


package main

import (
    "bufio"
    "bytes"
    "io"
    "io/ioutil"
    "os"
    "os/exec"

    "golang.org/x/text/encoding/simplifiedchinese"
    "golang.org/x/text/transform"
)

func main() {
    // 输入执行的命令
    cmd := exec.Command(`systeminfo`)

    // 获取子进程标准输出
    stdout, _ := cmd.StdoutPipe()

    // 执行命令
    cmd.Start()

    // 读取子进程
    reader := bufio.NewReader(stdout)
    for {
        line, err2 := reader.ReadString('\n')
        if err2 != nil || io.EOF == err2 {
            break
        }
        // 转换CMD的编码为GBK
        reader := transform.NewReader(
            bytes.NewReader([]byte(line)),
            simplifiedchinese.GBK.NewDecoder(),
        )
        d, _ := ioutil.ReadAll(reader)

        // 将子进程的内容输出
        print(string(d))
    }

    // 模拟CMD暂停
    bufio.NewReader(os.Stdin).ReadLine()
}

上一篇 下一篇

猜你喜欢

热点阅读