2010-09-01 6 views
1

Je fais un outil en PHP pour mon usage personnel. Mais PHP est très lent et la tâche que je dois faire prend beaucoup de temps, donc je vais créer un démon en C++ et le garder en arrière-plan (il fonctionnera dans un VPS).Comment commencer à écrire un processus démon dans un système d'exploitation de type Unix, comme Linux?

PHP se connecterait au démon par le biais d'un simple socket tcp (je vais essayer de concevoir/utiliser un protocole IPC simple) afin de soumettre la tâche. Le démon va gérer les tâches avec une simple file d'attente FIFO. PHP commencerait la tâche, mais il n'attendrait pas la fin, car cela peut prendre plusieurs minutes (PHP surveillera aussi la tâche - mais c'est un autre sujet).

L'interface web/PHP ne posera aucun problème. Mais je n'ai aucune expérience sur la programmation du démon Unix. J'ai fait des programmes de console simples avec C++ sur Linux, donc j'ai juste besoin d'un manuel/livre/guide et des conseils pour démarrer sur le développement d'un démon Unix.

Merci.

+0

http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html – Anycorn

+0

Qu'entendez-vous par "très long"? Vous pouvez envisager d'utiliser d'autres langages que C++, par ex. Python ou Perl, qui ont tous deux des outils robustes pour le travail. – Ether

+0

Je veux dire que ça prend beaucoup de temps. Je préfère utiliser C++ car j'ai de l'expérience dessus et je ne connais ni python ni perl. Aussi je pense que C++ est plus rapide, c'est à un niveau inférieur. – NeDark

Répondre

5

http://www.enderunix.org/docs/eng/daemon.php fournit une introduction assez approfondie mais courte avec un exemple de code qui semble couvrir tous les bits importants. Il ya une description beaucoup plus approfondie dans "Programmation avancée dans l'environnement UNIX (2ème édition)" si vous êtes prêt à dépenser de l'argent sur papier (ça vaut le coup, à mon humble avis). Le lien ci-dessus ne traite pas des scripts d'initialisation, mais vous pouvez probablement comprendre cela avec quelques recherches - tout ce dont vous avez besoin est un moyen de démarrer le code démon et un moyen de lui envoyer des signaux plus tard - typiquement, vous écrivez le PID du démon dans un fichier/var/run/XXX.

+2

Le lien ci-dessus n'a qu'une seule fourchette. La méthode canonique, et celle que je crois que "Advanced Programming dans l'environnement UNIX" suggère, est que vous devriez fork deux fois. http://stackoverflow.com/questions/881388/what-is-the-reason-for-performing-a-double-fork-when-creating-a-daemon – JimB

Questions connexes