我在下面有一个 Unix 工具 cat
的实现。它从 os.Stdin
读取一些字节到缓冲区,然后将这些字节写出到 os.Stdout
。有没有一种方法可以跳过缓冲区,直接将 Stdin
通过管道传输到 Stdout
?
package main
import "os"
import "io"
func main() {
buf := make([]byte, 1024)
var n int
var err error
for err != io.EOF {
n, err = os.Stdin.Read(buf)
if n > 0 {
os.Stdout.Write(buf[0:n])
}
}
}
最佳答案
您可以使用io.Copy()
(Documentation here)
例子:
package main
import (
"os"
"io"
"log"
)
func main() {
if _, err := io.Copy(os.Stdout, os.Stdin); err != nil {
log.Fatal(err)
}
}
关于unix - 如何使用管道在 Go 中写入 `cat`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11799692/