加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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)
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读