2010-11-04 3 views
0

Si j'exécuter le script ruby ​​du terminal et d'exécuter un autre processus en utilisant system de celui-ci et appuyez sur Ctrl + C, que INT est envoyé à l'autre processus, comment puis-je rendre le processus Ruby pour gérer et l'autre processus de ne pas l'obtenir du tout?signaux de blocage de processus d'exécution du terminal

Exemple:

trap('INT'){ puts 'Wait a bit' } 
system 'sleep 100' 

Si j'appuyez sur Ctrl + C ce script quittera immédiatement et ne rien imprimer: INT ne sera envoyé que pour dormir, donc il sortira et script sera terminé.

Répondre

0

Vous pourriez parlerez bifurquer, plutôt que d'utiliser le système. La section sur Independent Children dans la programmation Ruby pourrait aider. Ou, vous pourriez parler d'exécuter l'enfant complètement détaché du parent comme une application autonome, de sorte que si le parent quitte l'enfant continue, comme les serveurs httpd et autres. Je ne l'ai pas essayé, mais Daemons sonne comme si cela fonctionnerait bien.

0

Vous pouvez intercepter INT et quitter, en utilisant trap("INT") { exit }. Comme Greg, je ne sais pas si c'est ce que tu voulais, mais c'est peut-être quelque chose à regarder.

+0

J'ai ajouté exemple – tig

Questions connexes