2010-08-26 3 views
3

Je développe actuellement un RubyGem qui fournit un exécutable. L'exécutable conserve l'état de certains fichiers journaux à l'aide de la gemme FSSM.Quelle est la meilleure façon de démarrer un processus d'arrière-plan, qui peut être consulté plus tard

Cet exécutable devrait démarrer, faire quelque chose en arrière-plan et être arrêté plus tard.

Par exemple:

$ my_executable start 
# do something different... 
$ my_executable stop 

Je voudrais tout d'abord commencer un nouveau processus, qui fait le fichier regarder des choses, dans la méthode de démarrage . Mais je ne sais pas comment aborder ce processus pour l'arrêter.

Quelle est la meilleure façon de fournir un tel comportement?

Cordialement

Répondre

0

Il y a bibliothèque daemons qui va vous aider à daemonizing votre script Ruby. Il est utilisé par le bâtard.

Il existe également d'autres gemmes utiles décrites au ruby-toolbox.

3
pid = Process.fork{exec 'gcalctool'} #don't use 'system' or `executable` 
1.upto(10) do |n| 
    puts "counting #{n}" 
    STDOUT.flush 
    sleep 1 
end 
Process.kill('HUP', pid) 
+1

Ces jours-ci je comprends bien c'est [plus correct] (http://stackoverflow.com/a/4129557/405017) à utiliser 'Process.spawn "foo"' au lieu de 'Process.fork {exec « foo "}' quand l'intention est juste de lancer un autre processus. – Phrogz

Questions connexes