fifo的文件需要提前建立好,或者用程序处理
php
<?php
$fifoName = "my_fifo";
// 打开命名管道进行读取
$fifo = fopen($fifoName, "r+");
if ($fifo === false) {
die("Unable to open FIFO: $fifoName");
}
// 读取数据
$data = fread($fifo, 1024);
echo "Read from FIFO: " . $data;
// 关闭管道
fclose($fifo);
go
package main
import (
_ "fmt"
"os"
"syscall"
)
func main() {
// 创建一个命名管道
fifoName := "my_fifo"
// _ = os.Remove(fifoName) // 确保先前的命名管道被删除
_ = syscall.Mkfifo(fifoName, 0666)
defer os.Remove(fifoName) // 确保程序结束后删除命名管道
// 打开管道进行读写
fifo, err := os.OpenFile(fifoName, os.O_RDWR, 0666)
if err != nil {
panic(err)
}
defer fifo.Close()
// 写入数据
_, err = fifo.WriteString("Hello from the other side\n")
if err != nil {
panic(err)
}
// 读取数据
// buf := make([]byte, 50)
// n, err := fifo.Read(buf)
// if err != nil {
// panic(err)
// }
// fmt.Println("Received:", string(buf[:n]))
}