如何解决未定义:syscall.SIGURG在工作代码上
我是新来的,目前正在尝试了解同事编写的一些代码
go func() {
s := <-sigs
if s == syscall.SIGURG {
fmt.Println("received sigur")
} else {
log.Printf("RECEIVED SIGNAL: %s",s)
os.Exit(1)
}
}()
我同时使用GoLand和VSCode,并且这两个IDE在if s == syscall.SIGURG {
上报告错误
他们抛出undefined: syscall.SIGURG
问题是,我知道这段代码可用于Debian。所以我正在尝试为什么Windows计算机无法正常工作
尽管我有必需的进口商品:
import (
"fmt"
"os"
"os/signal"
"syscall"
)
解决方法
正如@Volker在评论中所写,SIGURG
在Windows上不存在。它存在于Debian之类的类Unix系统上。
我相信,如果您将代码更改为使用golang.org/x/sys/unix
而不是syscall
,那么这种行为对您来说将更加明显。 syscall
软件包的Golang文档包含the following deprecation notice:
已弃用:此软件包已被锁定。调用者应改为使用golang.org/x/sys存储库中的相应软件包。这也是应该应用新系统或版本所需的更新的地方。有关更多信息,请参见https://golang.org/s/go1.4-syscall。
还有用于Windows的软件包golang.org/x/sys/windows
,它不包括SIGURG
,因为它在Windows上不存在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。