簡體   English   中英

系統調用常量 syscall.ENONET 在 Go 中未定義

[英]Syscall Constant syscall.ENONET Undefined in Go

我嘗試運行以下 bar.go 腳本

package main

import (
    "fmt"
    "syscall"
)

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

通過調用go run bar.go並得到這個錯誤:

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

我正在使用 Mac 和 go 版本 1.14.3 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 上工作?

謝謝

是的,它有一些奇怪的問題。 雖然,系統調用現在被鎖定了。

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

我嘗試使用go version 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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM