2010-12-02 8 views
0

Je travaille actuellement sur un projet nécessitant un certain nombre de processus sous le contrôle d'un processus "maître", qui reçoit des commandes à distance via TCP et indique aux processus fils quoi faire (par exemple: quels fichiers ils devraient agir, quelles opérations de traitement ils devraient effectuer).Contrôle de processus à distance sous Linux

Je suis venu avec les idées suivantes pour passer des commandes/configuration vers le bas pour les processus enfants:

  • signaux (pas assez puissants)
  • Un protocole binaire sur des sockets ou des tuyaux reliant chaque processus le maître (réinventer la roue).
  • RPC (peut-être surpuissant)
  • CORBA (peut-être surpuissant)
  • DDS (totalement surpuissant)

Toutes les idées/suggestions?

+0

Dans quelle langue est implémentée? L'utilisation de threads au lieu de processus peut être plus simple. Ou mémoire partagée en fonction de la langue. – GinoA

+0

vous pouvez également utiliser des fichiers ou http://en.wikipedia.org/wiki/Message_queue – Drakosha

+0

L'imlpementation va probablement être en C++, bien que je considère staty avec le bon vieux C. – cyberguijarro

Répondre

0

Que diriez-vous d'un protocole de texte via les tuyaux? Les protocoles texte sont toujours meilleurs que les protocoles binaires car ils sont plus faciles à tester, et un test plus facile signifie généralement moins de bogues.

0

Vous pouvez également utiliser des files d'attente de messages ou de la mémoire partagée avec des sémaphores.

Vous pouvez également regarder dans un projet Apache appelé ActiveMQ qui permet aux messages d'être distribués aux files d'attente d'abonnement, etc. Il est très puissant et flexible et il existe des interfaces C. C'est idéal si vous avez beaucoup de machines/réseaux auxquels vous devez envoyer des messages.

http://activemq.apache.org/

0

Une file d'attente de message léger comme beanstalkd ou resque semble être le niveau de complexité. Les fichiers avec inotify pourraient également fonctionner; inotify est conçu comme une file d'attente d'événements. Vous pouvez l'essayer avec incrontab avant de le faire. {Xml, json} -rpc sont (un peu) plus complexes, mais aussi plus standard, car ils utilisent http. Cependant, la métaphore de file d'attente de messages est plus appropriée que rpc pour les interactions non bloquantes.

0

L'outil supervisord peut être utile. C'est un système client/serveur qui permet à ses utilisateurs de surveiller et de contrôler un certain nombre de processus sur des systèmes d'exploitation de type UNIX.

Questions connexes