访问Asterisk EAGI的FD(3)

时间:2017-04-11 18:31:50

标签: go asterisk

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

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

它似乎没有抛出错误 - 我的猜测是,我正在错误地访问FD。我的目的是访问进程'FD 3 for Asterisk EAGI。我也试过阅读替代路径​​fmt.Sprintf("/proc/%d/fd/3", os.Getpid()),但这似乎表现得一样。我做错了什么?

1 个答案:

答案 0 :(得分:1)

执行此操作的正确方法是syscall.Read(fd int, buf []byte) (n int, err error)doc)。关于我的问题,从Asterisk控制台内部,对sip show channelstats的调用显示我没有完全收到RTP数据包,而且Read正在阻塞,因为实际上没有什么可读的。我的网络设置需要工作。