我一直在运行服务器:
go run server.go &
当我完成这个过程时,这需要我杀死这个过程。我这样做的方式是使用kill PID
进程的go run
。
但是,我注意到我的服务器仍然显示为已连接。进一步调查似乎还有其他进程正在开始,似乎"保持活力"我的服务器:
$ps aux | grep go
username 70481 0.0 0.0 573416816 5228 ?? S 3:15PM 0:00.63 /var/folders/wf/89r2567s5hv48lj1g9l65mbw0000gp/T/go-build062422854/command-line-arguments/_obj/exe/server
username 70472 0.0 0.0 573407408 7720 ?? S 3:15PM 0:00.80 go run server.go
当我杀死此关联进程时,我发现我的连接已按预期发布。
是否有更好的方式来实现"杀死golang进程而不是kill PID
?或者是否存在这些幻像过程的原因?
我已经采取了杀死两个,但这似乎......很奇怪。
$ go version
go version go1.5.4 darwin/amd64
答案 0 :(得分:2)
你称之为“幻影进程”的是你的服务器,这就是为什么杀死它会杀死你的服务器。另一个是“go run”实用程序本身,它编译代码然后运行生成的可执行文件。