go語言接收linux/unix管道的數據

管道的內容,位於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

相關文章
相關標籤/搜索