go 实现无名管道通信
时间: 2023-10-31 21:05:35 浏览: 95
匿名管道通信例子
5星 · 资源好评率100%
在 Go 中,可以使用 `os.Pipe()` 函数创建一个管道,并且可以通过读写管道来实现进程间通信。以下是一个简单的示例:
```go
package main
import (
"fmt"
"os"
)
func main() {
// 创建无名管道
r, w, err := os.Pipe()
if err != nil {
fmt.Println("创建无名管道失败:", err)
return
}
// 写入数据到管道
go func() {
_, err := w.Write([]byte("Hello, World!"))
if err != nil {
fmt.Println("写入数据到管道失败:", err)
return
}
}()
// 从管道读取数据
buf := make([]byte, 1024)
n, err := r.Read(buf)
if err != nil {
fmt.Println("从管道读取数据失败:", err)
return
}
fmt.Println(string(buf[:n]))
}
```
在上面的示例中,我们首先使用 `os.Pipe()` 函数创建了一个无名管道。然后我们启动一个 goroutine,向管道中写入数据。接着,我们从管道中读取数据,并将读取到的数据打印出来。注意,我们在读取数据之前必须等待写入数据的 goroutine 执行完毕,否则可能会读取到空数据。
阅读全文