gpt4 book ai didi

sockets - 如何从 os.Error 获取 os.Errno?其他使用 os.Timeout 的方法?

转载 作者:IT王子 更新时间:2023-10-29 02:18:24 31 4
gpt4 key购买 nike

net.Conn接口(interface)提供了 SetTimeout 方法,我应该用 os.Timeout 检查返回的错误.但是我看不到在返回的 os.Error 上调用 os.Timeout 的方法。

(我得到的 os.Error 是 read unix @: Resource temporarily unavailable,它似乎由两部分组成:超时函数的描述和 strerrorEAGAIN 的描述。我试过 err == os.EAGAIN它不起作用,可能是因为 os.Error 中的额外信息)。

最佳答案

Go tutorial 的“I/O 包”部分有这个片段:

func OpenFile(name string, mode int, perm uint32) (file *File, err os.Error) {
r, e := syscall.Open(name, mode, perm)
if e != 0 {
err = os.Errno(e)
}
return newFile(r, name), err
}

syscall.Open() 有这个签名:

func Open(path string, mode int, perm uint32) (fd int, errno int)

所以我认为可以安全地假设 os.Error 仍然只是那个整数错误代码,只是添加了一些错误,并且您检查它的方法是正确的。

为了调查为什么 err == os.EAGAIN 对您不起作用,我将错误打印为 int 类型的值,然后 grep 了您平台的 errno.h 打印值的文件。

关于sockets - 如何从 os.Error 获取 os.Errno?其他使用 os.Timeout 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7939300/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com