捕获go进程的kill代码?

时间:2014-11-19 14:49:21

标签: unix go kill

我试图编写一个能够驱逐kill命令功能的测试。要做到这一点,我需要我的测试目标(一个非常简单的去http服务器 - https://github.com/jadekler/git-grunt-gostop/blob/master/test/fixtures/gostop_basic.go)来区分已经杀死-2与-9。有办法做到这一点吗?看起来似乎并不会发生 - 不管-2 vs -9,这是我的第一次尝试。后来的研究并不具有启发性。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:4)

您可以使用os/signal package捕获信号。您可以使用以下代码捕获SIGINT

import (
    "os"
    "os/signal"
)
...

// the signal module will lose notifications if the channel is not ready to receive, so give it a buffer
ch := make(chan os.Signal, 5)
go func() {
    for sig := range ch {
        // interrupt signal received
        os.Exit(0)
    }
}()
signal.Notify(ch, os.SIGINT)

不幸的是,你不能对SIGKILL做同样的事情。从signal(7)手册页:

  

无法捕获,阻止或忽略信号SIGKILLSIGSTOP