美文网首页📙Go语言:进阶大全
Go语言:读取CMD子进程输出信息

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

作者: 白祤星 | 来源:发表于2019-03-22 19:17 被阅读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()
    }
    
    

    相关文章

      网友评论

        本文标题:Go语言:读取CMD子进程输出信息

        本文链接:https://www.haomeiwen.com/subject/ahtdvqtx.html