diff options
| -rw-r--r-- | xmake/modules/private/service/server.lua | 3 | ||||
| -rw-r--r-- | xmake/modules/private/service/stop_service.lua | 10 |
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 |
