登录
首页 >  Golang >  Go问答

Go 中未定义的系统调用常量 syscall.ENONET

来源:stackoverflow

时间:2024-04-27 22:30:37 349浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Go 中未定义的系统调用常量 syscall.ENONET》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我尝试运行以下 bar.go 脚本

package main

import (
    "fmt"
    "syscall"
)

func main() {
    fmt.printf("%d\n", uintptr(syscall.enonet))
}

通过调用 go 运行 bar.go 并收到此错误:

# command-line-arguments
./bar.go:9:29: undefined: syscall.enonet

我使用的是 mac 和 go 版本 1.14.3 darwin/amd64。我尝试在 go 演示上运行这个确切的脚本,https://play.golang.org/p/ecmzpsgggoa,它成功了。

我尝试使用 cgo_enabled=1 goos=linux goarch=amd64 运行脚本,但收到此错误:

fork/exec /var/folders/2l/dj6ph5t92y17vhtv3n6xzr5r0000gn/T/go-build847134732/b001/exe/bar: exec format error

如何让 syscall.enonet 在 mac 上工作?

谢谢


解决方案


是的,有一些奇怪的问题。不过,syscall现在已经被锁定了。

deprecated: this package is locked down. 
callers should use the corresponding package in the golang.org/x/sys repository instead.

我尝试了 go 版本 go1.14.3 darwin/amd64,但遇到了同样的问题。

但是在文档中,我们有:

enonet          = errno(0x40)

由于 Errno 也是导出类型,您可以显式模拟相同的行为:

package main

import (
    "fmt"
    "syscall"
)

func main() {
    fmt.Printf("%d\n", syscall.Errno(0x40)) // 64
    fmt.Printf("%v\n", syscall.Errno(0x40)) // host is down
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>