diff options
author | Brad Fitzpatrick <bradfitz@golang.org> | 2012-02-15 14:24:24 +1100 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2012-02-15 14:24:24 +1100 |
commit | dabf3db7153faac5e2b59429990f9f1bf6e39399 (patch) | |
tree | bf4b7e068e3ba825d568ea3b8035dac19fda8881 | |
parent | eccc22e542bf5161a789b9956caa4d500208ea1e (diff) | |
download | go-dabf3db7153faac5e2b59429990f9f1bf6e39399.tar.gz go-dabf3db7153faac5e2b59429990f9f1bf6e39399.zip |
os/exec: add some examples
R=golang-dev, adg, r, bradfitz
CC=golang-dev
https://golang.org/cl/5675054
-rw-r--r-- | src/pkg/os/exec/example_test.go | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/pkg/os/exec/example_test.go b/src/pkg/os/exec/example_test.go new file mode 100644 index 0000000000..55eaac8abc --- /dev/null +++ b/src/pkg/os/exec/example_test.go @@ -0,0 +1,75 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package exec_test + +import ( + "bytes" + "encoding/json" + "fmt" + "log" + "os/exec" + "strings" +) + +func ExampleLookPath() { + path, err := exec.LookPath("fortune") + if err != nil { + log.Fatal("installing fortune is in your future") + } + fmt.Printf("fortune is available at %s\n", path) +} + +func ExampleCommand() { + cmd := exec.Command("tr", "a-z", "A-Z") + cmd.Stdin = strings.NewReader("some input") + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + log.Fatal(err) + } + fmt.Printf("in all caps: %q\n", out.String()) +} + +func ExampleCmd_Output() { + out, err := exec.Command("date").Output() + if err != nil { + log.Fatal(err) + } + fmt.Printf("The date is %s\n", out) +} + +func ExampleCmd_Start() { + cmd := exec.Command("sleep", "5") + err := cmd.Start() + if err != nil { + log.Fatal(err) + } + log.Printf("Waiting for command to finish...") + err = cmd.Wait() + log.Printf("Command finished with error: %v", err) +} + +func ExampleCmd_StdoutPipe() { + cmd := exec.Command("echo", "-n", `{"Name": "Bob", "Age": 32}`) + stdout, err := cmd.StdoutPipe() + if err != nil { + log.Fatal(err) + } + if err := cmd.Start(); err != nil { + log.Fatal(err) + } + var person struct { + Name string + Age int + } + if err := json.NewDecoder(stdout).Decode(&person); err != nil { + log.Fatal(err) + } + if err := cmd.Wait(); err != nil { + log.Fatal(err) + } + fmt.Printf("%s is %d years old\n", person.Name, person.Age) +} |