waitpid() called when stopping services.

master
Luka Vandervelden 2019-10-29 14:22:13 +01:00
parent 7fdccfa1b2
commit 184db7db1e
1 changed files with 15 additions and 0 deletions

View File

@ -15,6 +15,19 @@ def split_command(string)
return command, args return command, args
end end
lib C
fun waitpid(pid : Int32, status_ptr : Int32*, options : Int32) : Int32
end
class Process
def self.waitpid(pid)
options = 0
status_ptr = uninitialized Int32
C.waitpid(pid, pointerof(status_ptr), options)
end
end
class Service class Service
getter environment : Environment getter environment : Environment
getter providers = ProvidersList.new getter providers = ProvidersList.new
@ -295,6 +308,8 @@ class Service
else else
Process.kill Signal::TERM, _pid Process.kill Signal::TERM, _pid
end end
Process.waitpid _pid
else else
# Already stopped or dead, nothing to be done here. # Already stopped or dead, nothing to be done here.
end end