登录
首页 >  Golang >  Go问答

未定义:工作代码上的 syscall.SIGURG

来源:stackoverflow

时间:2024-04-29 21:00:35 432浏览 收藏

从现在开始,努力学习吧!本文《未定义:工作代码上的 syscall.SIGURG》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我是新来的,目前正在尝试理解同事编写的一些代码

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 上不存在。它存在于类 Unix 系统上,例如 Debian。

我相信,如果您将代码更改为使用 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 上不存在。

终于介绍完啦!小伙伴们,这篇关于《未定义:工作代码上的 syscall.SIGURG》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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