Named Pipes in Go for both Windows and Linux

2019-02-13 10:51发布

问题:

I am new to Go, I want to create Named Pipes implementation in Golang which works on both Windows and Linux.

I managed to get the code working on Ubuntu, but this one does not work on Windows

Isn't there any abstraction in Go which allows you to work with Named Pipes in both environment

Below is piece of my code

//to create pipe: does not work in windows    
syscall.Mkfifo("tmpPipe", 0666)    

// to open pipe to write    
file, err1 := os.OpenFile("tmpPipe", os.O_RDWR, os.ModeNamedPipe)    

//to open pipe to read    
file, err := os.OpenFile("tmpPipe", os.O_RDONLY, os.ModeNamedPipe)

Any help or pointers would help a lot. Thanks

回答1:

According to https://github.com/golang/go/issues/3599

nate's package looks nice, and anyone can "go get" it.

A Windows named pipe implementation written in pure Go:
https://github.com/natefinch/npipe

Which has inspired (Win32 IO-related utilities for Go):
https://github.com/Microsoft/go-winio



回答2:

There is an implementation of named pipes for Windows in Go lang from Microsoft:

https://github.com/Microsoft/go-winio