summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-04-05 23:45:59 +0800
committerruki <[email protected]>2022-04-05 23:45:59 +0800
commit314f11d73d924d8ff8340fb989a545149850dfda (patch)
tree87cca329570d70f33eea1a0733342086d0559b90
parentc7e96adbab7d833ca63ac4fb73061f9949a46de0 (diff)
stop server
-rw-r--r--xmake/modules/private/service/server.lua3
-rw-r--r--xmake/modules/private/service/stop_service.lua10
2 files changed, 12 insertions, 1 deletions
diff --git a/xmake/modules/private/service/server.lua b/xmake/modules/private/service/server.lua
index a4ce80706..8c4615bab 100644
--- a/xmake/modules/private/service/server.lua
+++ b/xmake/modules/private/service/server.lua
@@ -74,6 +74,9 @@ function server:runloop()
raise("%s: has been started!", self)
end
+ -- save the current pid for stopping service
+ io.writefile(self:pidfile(), os.getpid())
+
-- run loop
local sock = socket.bind(self:addr(), self:port())
sock:listen(100)
diff --git a/xmake/modules/private/service/stop_service.lua b/xmake/modules/private/service/stop_service.lua
index c99545dbb..5e9ca34b9 100644
--- a/xmake/modules/private/service/stop_service.lua
+++ b/xmake/modules/private/service/stop_service.lua
@@ -28,8 +28,16 @@ function _stop_remote_build_server(...)
local pid = io.readfile(pidfile)
if pid then
pid = pid:trim()
- print("stop pid: %s", pid)
+ try { function ()
+ if is_host("windows") then
+ os.run("taskkill /f /t /pid %s", pid)
+ else
+ os.run("kill -9 %s", pid)
+ end
+ print("remote_build_server[%s]: stopped", pid)
+ end}
end
+ os.rm(pidfile)
end
end