管道的内容,位于os.Stdin里,可以像普通文件一样操作os.Stdin,即可获取管道传过来的内容。
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值来判断程序是否通过管道调用。
调用方法:cat test.txt |./pipe
参考url:http://blog.ralch.com/tutorial/golang-command-line-pipes/
转载于:https://www.cnblogs.com/unsea/p/5641484.html