# File lib/terminator.rb, line 120
  def terminate options = {}, &block
    options = { :seconds => Float(options).to_i } unless Hash === options 

    seconds = getopt :seconds, options

    raise ::Terminator::Error, "Time to kill must be at least 1 second" unless seconds >= 1

    trap = getopt :trap, options, lambda{ eval("raise(::Terminator::Error, 'Timeout out after #{ seconds }s')", block) }

    handler = Signal.trap(signal, &trap)

    terminator_pid = plot_to_kill pid, :in => seconds, :with => signal

    begin
      block.call
      nuke_terminator(terminator_pid)
    ensure
      Signal.trap(signal, handler)
    end
  end