module Polyphony::Process

Process patches

Public Class Methods

kill_and_await(sig, pid) click to toggle source
# File lib/polyphony/adapters/process.rb, line 24
def kill_and_await(sig, pid)
  ::Process.kill(sig, pid)
  Polyphony.backend_waitpid(pid)
rescue Errno::ESRCH
  # process doesn't exist
end
kill_process(pid) click to toggle source
# File lib/polyphony/adapters/process.rb, line 16
def kill_process(pid)
  cancel_after(5) do
    kill_and_await('TERM', pid)
  end
rescue Polyphony::Cancel
  kill_and_await(-9, pid)
end
watch(cmd = nil, &block) click to toggle source
# File lib/polyphony/adapters/process.rb, line 7
def watch(cmd = nil, &block)
  terminated = nil
  pid = cmd ? Kernel.spawn(cmd) : Polyphony.fork(&block)
  Polyphony.backend_waitpid(pid)
  terminated = true
ensure
  kill_process(pid) unless terminated || pid.nil?
end