美文网首页Go语言用例Go知识库
golang父进程通过管道向子进程传递数据

golang父进程通过管道向子进程传递数据

作者: CodingCode | 来源:发表于2018-04-16 14:24 被阅读6次

    golang父进程通过管道向子进程传递数据

    这里例子里面父进程launch一个子进程,然后通过管道(stdin)向子进程传递文本串。

    父进程:

    package main
    
    import (
        "log"
        "os/exec"
    )
    
    func main() {
    
        cmd := exec.Command("./subprocess")
        cmdIn, _ := cmd.StdinPipe()
    
        cmdIn.Write([]byte("hello subprocess\ngoodbye subprocess"))
        cmdIn.Close()
    
        var err error = cmd.Run();
        if err != nil {
            log.Fatal(err)
        }
    }
    

    子进程:

    $ cat subprocess.go 
    package main
    
    import (
        "io/ioutil"
        "os"
        "time"
    )
    
    func main() {
    
        data, err := ioutil.ReadAll(os.Stdin)
        if err != nil {
            ioutil.WriteFile("subprocess.out", []byte(err.Error()), 0644)
    
        } else {
            ioutil.WriteFile("subprocess.out", data, 0644)
        }
    
        time.Sleep(time.Duration(1) * time.Second)
    }
    

    相关文章

      网友评论

        本文标题:golang父进程通过管道向子进程传递数据

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