在GoLang中杀死ListenAndServe

K2x*_*2xL 1 go sublimetext sublimetext2 sublimetext3

我正在尝试使用Sublime Text + GoSublime进行Golang开发。

我正在使用Go(ListenAndServe("8000", &handler))中的网络服务器。

我的问题是,当我运行Go进程(同时正在运行另一个进程)时,第二个进程不起作用(因为该端口已在使用中)。

我想发生的是,当我go run web.go(如果已经在运行)时,请在运行该命令之前将其关闭。

Sublime Text 3的构建系统似乎无法跟踪先前的执行-因此,我不知道终止的最佳方法。当我运行CTRL + B时​​,它不会阻塞,它会在另一个线程中执行构建系统-这意味着在执行下一个之前,我无法按CTRL + C。因此,我要做的是在启动下一个进程之前,通过命令行终止现有进程。

因此,我正在寻找具有Sublime Text的构建系统配置的解决方案,或者甚至让Go进程本身检查是否正在运行并终止该进程。

有想法吗?从终端来回交换有点烦人。

jef*_*uan 5

不知道我是否理解正确的问题。

但是在崇高的文本构建控制台中,有tskill命令可以杀死从控制台启动的活动任务。因此,您可以键入Ctrl+B以调用控制台,并键入tskill以杀死正在运行的web.go任务。也有其他别名tskill <task ID>, task replay or task go。参考在这里。之后,您可以运行其他命令,包括go run。

更重要的是有一个replay命令。“这就像运行,但是尝试在运行之前取消任何活动的执行”。我觉得它看起来像您想要的。

此外,Gosublime命令外壳具有sh命令模式。例如键入sh killall web;go run web.go或运行shell脚本来运行它非常灵活。

希望它会有所帮助。