一尘不染

访问Asterisk EAGI的FD(3)

go

我有以下似乎无限期阻塞的Golang代码

eagi := os.NewFile(uintptr(3), "/dev/stdeagi")
data := bufio.NewReaderSize(eagi, 64*1024)
...
data.WriteTo(conn) // Blocks indefinitely!

它甚至似乎都没有引发错误-我的猜测是,我访问FD的方式不正确。我的目的是访问Asterisk EAGI的Process FD 3
。我也尝试阅读替代路径fmt.Sprintf("/proc/%d/fd/3", os.Getpid()),但这似乎表现相同。我究竟做错了什么?


阅读 288

收藏
2020-07-02

共1个答案

一尘不染

正确的方法是syscall.Read(fd int, buf []byte) (n int, err error)doc)。关于我的问题,在Asterisk控制台内部,有一个呼叫sip show channelstats表明我没有完全接收RTP数据包,并且Read处于阻塞状态,因为实际上没有要读取的内容。我的网络设置需要工作。

2020-07-02