Go 在cygwin上捕获Ctrl+c

Go 在cygwin上捕获Ctrl+c,go,cygwin,signals,ctrl,Go,Cygwin,Signals,Ctrl,下面的golang代码在DOS提示符下运行时捕获CTRL+C,但在Cygwin中运行时,按下CTRL+C时不会捕获任何内容 按下CTRL+C时Cygwin做什么?我的操作系统是Win7 64位,运行32位Cygwin func main() { c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) go func(){ for sig := range c {

下面的golang代码在DOS提示符下运行时捕获CTRL+C,但在Cygwin中运行时,按下CTRL+C时不会捕获任何内容

按下CTRL+C时Cygwin做什么?我的操作系统是Win7 64位,运行32位Cygwin

    func main() {
        c := make(chan os.Signal, 1)
        signal.Notify(c, os.Interrupt)
        go func(){
        for sig := range c {
            fmt.Println(sig.String())
        }
        }()

        time.Sleep(5000 * time.Millisecond) 
        fmt.Println("Done")
    }

我在cygwin邮件列表中得到的答案是,为了让信号工作,程序必须被编译并与cygwin编译器和链接器链接。Cygwin不是golang支持的平台,因此我无法在Cygwin启动的golang程序中捕获CTRL+C。

我在Cygwin邮件列表中得到的答案是,为了使信号工作,必须编译程序并与Cygwin编译器和链接器链接。Cygwin不是golang支持的平台,因此我无法在Cygwin启动的golang程序中捕获CTRL+C。

在msys中,我是否在捕获中断的程序上获得输出取决于我是使用go run还是go build,后面跟着which.exe。不确定Cygwin是否也有同样的怪癖。在谷歌中键入ctrl-c终端Cygwin后,我猜你的Cygwin是<1.7.18。@Volker我也在谷歌上搜索过,这似乎是ctrl+c根本不起作用。关于从Cygwin下运行的Windows程序捕获信号中断有很多完全不同的问题,我还没有找到一个令人满意的关于伪终端之类的问题的答案。我得到的是,Cygwin可能发送一个文本Unix SIGINT,而不是Windows使用的任何中断代码,但我不确定。@Volker-我有1.7。24@Jsor-我的代码在这两种情况下都无法捕获Cygwin发出的信号。当我真的去跑步的时候。。。Ctrl+c终止go-run进程,但go程序运行到完成。当我执行./signal.catcher.exe时,Ctrl+c会终止程序,但程序不会运行到完成。在msys中,我是否在捕捉中断的程序上获得输出取决于我是使用go run还是go build,后跟which.exe。不确定Cygwin是否也有同样的怪癖。在谷歌中键入ctrl-c终端Cygwin后,我猜你的Cygwin是<1.7.18。@Volker我也在谷歌上搜索过,这似乎是ctrl+c根本不起作用。关于从Cygwin下运行的Windows程序捕获信号中断有很多完全不同的问题,我还没有找到一个令人满意的关于伪终端之类的问题的答案。我得到的是,Cygwin可能发送一个文本Unix SIGINT,而不是Windows使用的任何中断代码,但我不确定。@Volker-我有1.7。24@Jsor-我的代码在这两种情况下都无法捕获Cygwin发出的信号。当我真的去跑步的时候。。。Ctrl+c终止go-run进程,但go程序运行到完成。当我执行./signal.catcher.exe时,Ctrl+c会终止程序,但程序不会运行到完成。在这两种情况下,信号都不会被捕获。