2010-04-21 4 views
4

Je suis le portage d'une application qui fonctionne comme un service d'arrière-plan dans Windows au démarrage, nous portons l'application à Linux (SUSE Enterprise Server), je suis complètement nouveau à Linux. Quelqu'un peut-il m'aider sur la façon de procéder? CommeWindows service de portage à linux

  1. Dois-je compiler l'exécutable linux
  2. Après Builiding binaire, quels changements dois-je faire pour linux les fichiers de démarrage pour lancer cet exécutable
  3. Comment mon service peut enregistrer des fonctions callback pour modifier ou changer ou envoyer des commandes à mon service pendant qu'il fonctionne

Répondre

3
  1. Oui, vous devez créer un binaire Linux. Vous pouvez reformuler votre question car je doute que ce soit la réponse que vous voulez :-)
  2. Vous devriez généralement créer ce qu'on appelle un fichier "init", qui se trouve dans /etc/init.d. Novell dispose d'un guide online which you can use to author the file. Notez que bien que le fichier init soit commun, la méthode exacte utilisée par le système d'exploitation pour l'utiliser varie en fonction de la distribution.
  3. Cela va être un changement marqué pour vous. Si vous effectuez des actions simples telles que le rechargement d'un fichier de configuration, vous pouvez utiliser la fonctionnalité des signaux, en particulier le signal SIGHUP/HUP qui est généralement utilisé à cette fin. Si vous avez besoin d'une communication étendue avec votre démon, vous pouvez utiliser un socket de domaine UNIX (pensez-y comme un tube nommé) ou un socket réseau.

Une autre tâche que vous devrez accomplir est de démoniser votre application. Généralement, ceci est fait par fork() d'abord votre processus, puis en redirigeant les tuyaux stdin/stdout dans l'enfant. Il y a plus de détails auxquels il est possible de répondre en lisant this document

3

Voir how-to-migrate-a-net-windows-service-application-to-linux-using-mono. Sous Linux, deamons sont de simples processus d'arrière-plan. Aucune méthode de contrôle spéciale (par exemple start(), stop()) n'est utilisée comme dans Windows. Créez votre service en tant qu'application simple (console) et exécutez-le en arrière-plan. Vous pouvez utiliser un outil tel que daemonize pour exécuter un programme en tant que démon Unix.

Questions connexes