class Parallel::UserInterruptHandler

def kill_on_ctrl_c(pids, options)

kill all these pids or threads if user presses Ctrl+c
def kill_on_ctrl_c(pids, options)
  @to_be_killed ||= []
  old_interrupt = nil
  signal = options.fetch(:interrupt_signal, INTERRUPT_SIGNAL)
  if @to_be_killed.empty?
    old_interrupt = trap_interrupt(signal) do
      warn 'Parallel execution interrupted, exiting ...'
      @to_be_killed.flatten.each { |pid| kill(pid) }
    end
  end
  @to_be_killed << pids
  yield
ensure
  @to_be_killed.pop # do not kill pids that could be used for new processes
  restore_interrupt(old_interrupt, signal) if @to_be_killed.empty?
end