【发布时间】:2020-08-13 13:19:54
【问题描述】:
我是新手,目前正在尝试理解同事编写的一些代码
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"
)
【问题讨论】:
-
Windows 没有 SIGURG。
-
无法模拟吗?否则,我将从现在开始在 Debian 上进行双重引导。你能把它写成答案而不是命令,所以我会接受吗?
-
你不需要双启动,如果你的主操作系统是Windows,你可以使用WSL docs.microsoft.com/en-us/windows/wsl/about
-
不,你不能“模拟”一个不存在的信号。你可以做什么:保护 xyz_linux.go 文件中的那段代码,并有一个单独的 xyz_windows.go 提供相同的 API(但不使用 SIGURG)。或者干脆停止使用 Windows :-)
-
我会使用 WSL,直到我可以在 Debian 上编码!
标签: go system-calls