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

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)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容