初心者のGo言語 -32- <CombinedOutput,Environ,Output>
こんにちは、kurumi-bioです。
第3回目のexecパッケージ(標準ライブラリー)の学習です
環境
- Windows
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.20 windows/amd64 - Linux
OSバージョン:openSUSE Leap 15.4
Go言語のバージョン:go version go1.20.1 linux/amd64
CombinedOutput関数
func (c *Cmd) CombinedOutput() ([]byte, error)
◆テストコード(printOut.go)
package main import ( "fmt" "os" ) func main() { fmt.Fprint(os.Stdout, "stdout!") fmt.Fprint(os.Stderr, "stderr!") }
◆テストコード(CombinedOutputTest.go)
package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("./printOut.exe") b, e := cmd.CombinedOutput() if e != nil { fmt.Printf("err=%v\n", e) } fmt.Printf("[%s]\n", b) }
◆実行結果(Windows)
Environ関数
func (c *Cmd) Environ() []string
◆テストコード
package main import ( "fmt" "os" "os/exec" ) func main() { if len(os.Args) != 2 { os.Exit(1) } cmd := exec.Command(os.Args[1]) s := cmd.Environ() for i, v := range s { fmt.Printf("Environ[%d]=[%s]\n", i, v) } }
◆実行結果(Windows)
Output関数
func (c *Cmd) Output() ([]byte, error)
◆テストコード
package main import ( "fmt" "os" "os/exec" "strings" ) func main() { if len(os.Args) != 3 { os.Exit(1) } var serr strings.Builder cmd := exec.Command(os.Args[1], os.Args[2]) cmd.Stderr = &serr o, e := cmd.Output() if e != nil { fmt.Fprintf(os.Stderr, "ERROR=[%v]\n", e) fmt.Printf("stderr=[%s]\n", serr.String()) } fmt.Printf("o=[%s]\n", o) }
◆実行結果(Windows)
◆実行結果(Windows)
◆実行結果(Windows)
最後までご覧いただきありがとうございます