Module: Paraspec::ProcessHelpers

Included in:
Supervisor
Defined in:
lib/paraspec/process_helpers.rb

Instance Method Summary collapse

Instance Method Details

#kill_child_processesObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/paraspec/process_helpers.rb', line 3

def kill_child_processes
  # Only kill if we are in supervisor
  return unless Process.pid == Process.getpgrp

  child_pids = `pgrep -g #{$$}`
  if $?.exitstatus != 0
    warn "Failed to run pgrep (#{$?.exitstatus})"
  end
  child_pids = child_pids.strip.split(/\n/).map { |pid| pid.to_i }
  child_pids.delete_if do |pid|
    pid == Process.pid
  end
  child_pids.each do |pid|
    begin
      Process.kill('TERM', pid)
    end
  end
end