github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/rpc/ipc_unix.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:45</date> 10 //</624342664774422528> 11 12 13 //+构建darwin dragonfly freebsd linux nacl netbsd openbsd solaris 14 15 package rpc 16 17 import ( 18 "context" 19 "net" 20 "os" 21 "path/filepath" 22 ) 23 24 //ipclisten将在给定的端点上创建一个Unix套接字。 25 func ipcListen(endpoint string) (net.Listener, error) { 26 //确保存在IPC路径,并删除以前的任何剩余部分 27 if err := os.MkdirAll(filepath.Dir(endpoint), 0751); err != nil { 28 return nil, err 29 } 30 os.Remove(endpoint) 31 l, err := net.Listen("unix", endpoint) 32 if err != nil { 33 return nil, err 34 } 35 os.Chmod(endpoint, 0600) 36 return l, nil 37 } 38 39 //newipcconnection将连接到给定端点上的UNIX套接字。 40 func newIPCConnection(ctx context.Context, endpoint string) (net.Conn, error) { 41 return dialContext(ctx, "unix", endpoint) 42 } 43