我有以下似乎无限期阻塞的 Golang 代码
eagi := os.NewFile(uintptr(3), "/dev/stdeagi")
data := bufio.NewReaderSize(eagi, 64*1024)
...
data.WriteTo(conn) // Blocks indefinitely!
它似乎甚至没有抛出错误 - 我猜是我访问 FD 不正确。我的目的是访问进程的 FD 3 Asterisk EAGI .我也尝试阅读替代路径 fmt.Sprintf("/proc/%d/fd/3", os.Getpid())
,但这似乎表现相同。我做错了什么?
最佳答案
正确的方法是 syscall.Read(fd int, buf []byte) (n int, err error)
( doc )。关于我的问题,从 Asterisk 控制台内部调用 sip show channelstats
表明我没有完全接收到 RTP 数据包,并且读取被阻塞,因为确实没有什么可读的。我的网络设置需要改进。
关于go - 访问 Asterisk EAGI 的 FD(三),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43353694/