我有以下似乎无限期阻塞的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()),但这似乎表现相同。我究竟做错了什么?
fmt.Sprintf("/proc/%d/fd/3", os.Getpid())
正确的方法是syscall.Read(fd int, buf []byte) (n int, err error)(doc)。关于我的问题,在Asterisk控制台内部,有一个呼叫sip show channelstats表明我没有完全接收RTP数据包,并且Read处于阻塞状态,因为实际上没有要读取的内容。我的网络设置需要工作。
syscall.Read(fd int, buf []byte) (n int, err error)
sip show channelstats