Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 捕获go进程的kill代码?_Unix_Go_Kill - Fatal编程技术网

Unix 捕获go进程的kill代码?

Unix 捕获go进程的kill代码?,unix,go,kill,Unix,Go,Kill,我正在尝试编写一个测试,该测试将淘汰kill命令的功能。要做到这一点,我需要测试的目标(一个非常简单的GOHTTP服务器-)来区分使用-2和-9进行杀戮。有没有办法做到这一点?似乎无论-2对-9,go的延迟都不会发生,这是我的第一次尝试。随后的研究并没有带来启发 谢谢你的建议 您可以使用。您可以使用如下代码捕获SIGINT: import ( "os" "os/signal" ) ... // the signal module will lose notifications

我正在尝试编写一个测试,该测试将淘汰kill命令的功能。要做到这一点,我需要测试的目标(一个非常简单的GOHTTP服务器-)来区分使用-2和-9进行杀戮。有没有办法做到这一点?似乎无论-2对-9,go的延迟都不会发生,这是我的第一次尝试。随后的研究并没有带来启发


谢谢你的建议

您可以使用。您可以使用如下代码捕获
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
执行同样的操作。从
信号(7)
手册页:

无法捕获、阻止或忽略信号
SIGKILL
SIGSTOP


您是否自己启动了该过程,并希望导致其退出的信号;或者你想用
信号
软件包处理信号?嘿-谢谢你的回复。是的,我自己启动了这个过程,现在我只想运行
kill-2
,看看结果如何。编辑:但是,这样做的目的是让外部javascript进程启动它,而另一个进程将停止它。也就是说,我无法查看产生流程的东西的退出代码:/嗯,您不能在非子进程上等待,因此无法直接获取退出状态。如果您确实需要退出状态,您需要自己启动它,或者让实际的父进程以某种方式进行通信。请注意,您不能捕获SIGKILL(9):它会导致进程终止,而没有机会进行任何特殊处理。啊!这看起来很有希望。非常感谢。