method

kill

v1_8_7_72 - Show latest stable - Class: Process
kill(...)
public

Sends the given signal to the specified process id(s), or to the current process if pid is zero. signal may be an integer signal number or a POSIX signal name (either with or without a SIG prefix). If signal is negative (or starts with a minus sign), kills process groups instead of processes. Not all signals are available on all platforms.

   pid = fork do
      Signal.trap("HUP") { puts "Ouch!"; exit }
      # ... do some work ...
   end
   # ...
   Process.kill("HUP", pid)
   Process.wait

produces:

   Ouch!

2Notes

Common signals

szeryf · Aug 11, 20092 thanks

Some of the more commonly used signals:

 1       HUP (hang up)
 2       INT (interrupt)
 3       QUIT (quit)
 6       ABRT (abort)
 9       KILL (non-catchable, non-ignorable kill)
 14      ALRM (alarm clock)
 15      TERM (software termination signal)

Use kill 0 to find out if process is running

artemave · Dec 29, 2011

==== is_running.rb:

#!/usr/bin/env ruby

pid = ARGV[0].to_i

begin
Process.kill(0, pid)
puts "#{pid} is running"
rescue Errno::EPERM                     # changed uid
puts "No permission to query #{pid}!";
rescue Errno::ESRCH
puts "#{pid} is NOT running.";      # or zombied
rescue
puts "Unable to determine status for #{pid} : #{$!}"
end

Thanks to http://stackoverflow.com/a/200568/51209