管道的内容,位于os.Stdin里,能够像普通文件同样操做os.Stdin,便可获取管道传过来的内容。golang
package main import ( "bufio" "fmt" "log" "os" ) func main() { fileInfo, _ := os.Stdin.Stat() if (fileInfo.Mode() & os.ModeNamedPipe) != os.ModeNamedPipe { log.Fatal("The command is intended to work with pipes.") } s := bufio.NewScanner(os.Stdin) for s.Scan() { fmt.Println(s.Text()) } }
经过os.Stdin的mode值来判断程序是否经过管道调用。url
调用方法:cat test.txt |./pipe blog
参考url:http://blog.ralch.com/tutorial/golang-command-line-pipes/ip