Il y a plusieurs façons de le faire IPC (inter-process communication). L'one-way est l'envoi de signaux comme @lukstei montre sa réponse. Une autre façon est d'utiliser les sockets, voici un exemple minimal d'un démon que vous pouvez demander le temps en utilisant les sockets 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
Essayons sur:
$ ./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
Hope this helps!
Une raison particulière pour laquelle vous n'avez encore accepté aucune réponse? –