Skip to content

Commit 8386bbe

Browse files
authored
Merge pull request #814 from devlights/add-unix-mkfifo-example
2 parents 1c07dfe + 3822c9b commit 8386bbe

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
tmp-fifo
2+
app
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# https://taskfile.dev
2+
3+
version: '3'
4+
5+
vars:
6+
FIFO_FILE: ./tmp-fifo
7+
8+
tasks:
9+
default:
10+
cmds:
11+
- task: build
12+
- task: run
13+
build:
14+
cmds:
15+
- go build -o app .
16+
run:
17+
cmds:
18+
- rm -f {{.FIFO_FILE}}
19+
- ./app -fname {{.FIFO_FILE}}
20+
- ls -l {{.FIFO_FILE}}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
//go:build linux
2+
3+
package main
4+
5+
import (
6+
"flag"
7+
"log"
8+
"os"
9+
10+
"golang.org/x/sys/unix"
11+
)
12+
13+
var (
14+
fname string
15+
)
16+
17+
func init() {
18+
log.SetFlags(0)
19+
20+
flag.StringVar(&fname, "fname", "", "fifo file name")
21+
flag.Parse()
22+
}
23+
24+
func main() {
25+
if err := run(); err != nil {
26+
log.Fatal(err)
27+
}
28+
}
29+
30+
func run() (err error) {
31+
//
32+
// 名前付きパイプを作成
33+
// mkfifoコマンドを実行したのと同じ意味となる
34+
//
35+
// $ mkfifo fname -m0666
36+
//
37+
// [REFERENCES]
38+
// - https://tldp.org/LDP/lpg/node15.html
39+
// - https://linuxcommand.net/mkfifo/
40+
//
41+
err = unix.Mkfifo(fname, 0666)
42+
if err != nil {
43+
return err
44+
}
45+
46+
if fi, err := os.Stat(fname); err == nil {
47+
if fi.Mode()&os.ModeNamedPipe != 0 {
48+
log.Println("Named Pipe was created.")
49+
}
50+
}
51+
52+
return nil
53+
}

0 commit comments

Comments
 (0)