go - 访问 Asterisk EAGI 的 FD(三)

标签 go asterisk

我有以下似乎无限期阻塞的 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/

相关文章:

go - 如何在不将结果输出到终端的情况下重定向 Go 中的命令?

go - 如何修复解析 go.mod 模块将其路径声明为 "x"但需要为 "y"

go - 在 Golang 中运行带有选项的 exe

php - 调用占线时 Asterisk AMI 上的 CDR 目标错误

python - 如何从 golang 中的单个 protobuf 二进制文件中解码多个指标(流多个)

google-app-engine - 是否可以将 Go vendor 库与 Google App Engine 一起使用?

asterisk - Asterisk 被叫 channel 挂断后继续调用 channel

asterisk - FreePBX 添加新的 SIP 分机

asterisk - PHPAGI/Cepstral/Asterisk - 许可证问题

linux - 修复 Asterisk 目录路径