Существует несколько способов сделать IPC ( межпроцессное взаимодействие ). Одним из способов отправки сигналов, как показывает @lukstei, является его ответ. Другой способ заключается в использовании сокетов, вот минимальный пример демона, который вы можете запросить время с помощью сокетов TCP:
#!/usr/bin/env ruby -wKU
require 'socket'
case ARGV[0]
when "start"
puts "start daemon"
server = TCPServer.open('0.0.0.0', 9090)
Process.daemon
loop {
conn = server.accept
conn.puts "Hello !"
conn.puts "Time is #{Time.now}"
conn.close
}
when "time?"
puts "Asking daemon what time it is"
sock = TCPSocket.open('0.0.0.0', 9090)
while line = sock.gets
puts line
end
sock.close
end
Давайте попробуем:
$ ./my_daemon.rb start
start daemon
$ ./my_daemon.rb time?
Asking daemon what time it is
Hello !
Time is 2013-10-25 17:01:32 +0200
$ ./my_daemon.rb time?
Asking daemon what time it is
Hello !
Time is 2013-10-25 17:01:34 +0200
Надеюсь, это поможет!