golang通过named pipes实现IPC通信
发布时间:2020-12-16 09:27:11 所属栏目:大数据 来源:网络整理
导读:golang基于named pipes实现进程间的IPC通信 package mainimport ("bufio""fmt""log""os""syscall""time")var pipeFile = "pipe.log"func main() {os.Remove(pipeFile)err := syscall.Mkfifo(pipeFile,0666)if err != nil {log.Fatal("Make named pipe file e
golang基于named pipes实现进程间的IPC通信 package main import ( "bufio" "fmt" "log" "os" "syscall" "time" ) var pipeFile = "pipe.log" func main() { os.Remove(pipeFile) err := syscall.Mkfifo(pipeFile,0666) if err != nil { log.Fatal("Make named pipe file error:",err) } go scheduleWrite() fmt.Println("open a named pipe file for read.") file,err := os.OpenFile(pipeFile,os.O_CREATE,os.ModeNamedPipe) if err != nil { log.Fatal("Open named pipe file error:",err) } reader := bufio.NewReader(file) for { line,err := reader.ReadBytes(‘n‘) if err == nil { fmt.Print("load string:" + string(line)) } } } func scheduleWrite() { fmt.Println("start schedule writing.") f,os.O_RDWR|os.O_CREATE|os.O_APPEND,0777) if err != nil { log.Fatalf("error opening file: %v",err) } i := 0 for { fmt.Println("write string to named pipe file.") f.WriteString(fmt.Sprintf("test write times:%dn",i)) i++ time.Sleep(time.Second) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |