我深入研究了两者的调用堆栈os.OpenFile
,看看net.Listen
是否可以使用os.OpenFile
. 以下是我的尝试。但是,在跟踪两个调用堆栈(os.OpenFile
和net.Listen
)之后,我仍然感到困惑。显然,下面的代码不会从文件中读取数据,而是将数据存储到文件系统中。
如何使用 UNIX 域套接字实现os.OpenFile
?
os.ModeSocket
如果不用来os.OpenFile
创建 UNIX 套接字,那么它的目的是什么?
package main
import (
"fmt"
"log"
"os"
)
func main() {
sock, err := os.OpenFile("f.sock", os.O_RDWR|os.O_CREATE, os.ModeSocket|os.ModePerm)
defer sock.Close()
if err != nil {
log.Panic(err)
}
n, err := sock.WriteString("hello\n")
if err != nil {
fmt.Println(err)
} else {
fmt.Println(n)
}
b := make([]byte, 10)
n, err = sock.Read(b)
fmt.Println(n)
if err != nil {
fmt.Println("error reading: ", err)
}
fmt.Println(b)
}
喵喔喔
相关分类