如何从Node正确杀死Go进程

时间:2013-10-16 04:08:08

标签: node.js go gruntjs

我想构建一个产生Go服务器的Grunt任务,然后在Go源文件发生变化时杀死并重新生成它。

我正在像这样产生Go过程:

goProcess = child_process.exec('go run main.go', ...

后来我试图像这样杀死这个过程:

if (goProcess) {
    goProcess.kill('SIGINT');
}

但Go过程并没有消亡。

如何在Node中正确杀死Go进程?

我在这里有一个工作示例https://github.com/sporto/go-must-die

1 个答案:

答案 0 :(得分:0)

child_process.exec在shell中运行命令,似乎正在返回shell进程的PID。请改用spawn。

go run创建一个可执行文件并使用不同的PID运行它。尝试使用go build main.go构建二进制文件并从node.js运行二进制文件。

goProcess = child_process.spawn('./main')