exec.Commandで実行したコマンドが標準入力を読まずに終了してしまう


標準入力をする外部コマンドを実行したいです。  
今回はbashのreadコマンドで標準入力がしたいです。

Python 3.6でこう書くとやりたいことができるんですが

[code]

    import subprocess
    
    print('start')
    subprocess.run(['bash', '-c', 'read'])
    print('end')
    
[/code]

golangで書くと入力できずにgoのプログラムが終了してしまいました。

[code]

    package main
    
    import (
        "fmt"
        "os/exec"
    )
    
    func main() {
        fmt.Println("start")
        cmd := exec.Command("bash", "-c", "read")
        cmd.Run()
        fmt.Println("end")
    }
    
[/code]

どういう風に直すとreadコマンドで標準入力できるようになりますか？




`cmd.Stdin` を `os.Stdin` にしてください。[`Cmd` 型の
godoc](https://golang.org/pkg/os/exec/#Cmd) によると、この変数はデフォルトでは `os.DevNull`
になっています。

以下サンプルコードです。

[code]

    package main
    
    import (
        "fmt"
        "log"
        "os"
        "os/exec"
    )
    
    func main() {
        fmt.Println("start")
        cmd := exec.Command("bash", "-c", "read")
        cmd.Stdin = os.Stdin
        if err := cmd.Run(); err != nil {
            log.Fatal(err)
        }
        fmt.Println("end")
    }
    
[/code]




`cmd.Stdin` を `os.Stdin` にしてください。[`Cmd` 型の
godoc](https://golang.org/pkg/os/exec/#Cmd) によると、この変数はデフォルトでは `os.DevNull`
になっています。

以下サンプルコードです。

[code]

    package main
    
    import (
        "fmt"
        "log"
        "os"
        "os/exec"
    )
    
    func main() {
        fmt.Println("start")
        cmd := exec.Command("bash", "-c", "read")
        cmd.Stdin = os.Stdin
        if err := cmd.Run(); err != nil {
            log.Fatal(err)
        }
        fmt.Println("end")
    }
    
[/code]

