[C++] Implémentation d'un service NT/XP [Résolu & Conseil]

Implémentation d'un service NT/XP [Résolu & Conseil] [C++] - C++ - Programmation

Marsh Posté le 29-12-2003 à 14:57:54    

Ancien titre du post :
 
   "Terminaison d'une application Win32 -><signal.h><-"
 
Bonjour à tous,
 
Je souhaite réaliser un démon (application de type serveur reseau) et je programme sous visual c++.
 
Mon premier démon fonctionne correctement et s'interrompe facilement grace à la gestion du signal SIGINT (Ctrl+C dans la fenetre console de l'application). Il s'agit d'une application de type "Win32 console".
 
Mon nouveau démon correspond au même code source mais il s'agit maintenant d'une application "Win32". Lorsque j'execute mon démon, il n'apparait que dans le gestionaire de tache (il n'y a plus de console associé, c etait mon objectif). Comment dans ce cas, puis-je interrompre mon démon correctement ? Comment envoyer à mon démon un signal (SIGINT ou autre) ?
 
Aujourd'hui, je me contente de détruire le démon via le gestionnaire des taches, mais la terminaison dans ce cas n'est vraiment pas propre !  :non:  
 
Merci d'avance de votre aide.  :jap:


Message édité par xterminhate le 30-12-2003 à 12:29:57
Reply

Marsh Posté le 29-12-2003 à 14:57:54   

Reply

Marsh Posté le 29-12-2003 à 15:51:15    

Il est clair que je n'ai pas pris la bonne direction pour implémenter mon démon. Je doute pouvoir passer à coté d'un thread et d'un fichier toto.pid... ce que je ne maitrise pas bien encore.
 
Cela dit, mon problème exposé ci-dessous demeure.
 
Cordialement,
   Xterm-in'hate

Reply

Marsh Posté le 29-12-2003 à 17:11:35    

sous windows (NT/2000/XP), les démons s'appellent des services NT, il y en a un exemple sur la msdn :
http://msdn.microsoft.com/library/ [...] sample.asp


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 29-12-2003 à 19:23:34    

Je pense que c est la meilleure solution pour arriver à mes fins. Je n'ai aucune expérience en matière de service NT/XP alors je vais commencer par l'aide en ligne de MSDN.
 
Je posterai ici même si j'obtiens quelque chose de facilement présentable pour les éventuels interessés. Tout encouragement serait le bienvenue pour cette longue et difficile croisade dans les entrailles de windows. :p
 
Cordialement,
   Xterm-in'Hate.

Reply

Marsh Posté le 29-12-2003 à 21:02:35    

si mes souvenirs sont bons, la source est tres facilement exploitable : on peut réutiliser service.cpp/service.h en ne changeant que le nom du service, et l'exemple est assez simple


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 29-12-2003 à 23:15:58    

Effectivement, la SDK service.h/.c semble assez simple à reutiliser. Merci bcp pour ton aide.
 
   Xter.

Reply

Marsh Posté le 30-12-2003 à 12:18:56    

Apres quelques retouches mineures dans le code source de la SDK (service.h et service.c), et l'adaptation de la condition d'arret de mon service (à base d'un objet HANDLER), j'ai obtenu tres rapidement un service NT/XP qui s'installe, se désinstalle et s'excute proprement.
 
Pour ceux que ca interesse, il suffit donc de télécharger le kit MSDN sample (vs6.exe) et de chercher dans le répertoire \msdn\sample\sdk_WinBase_WinNT_service ou \msdn\sample\sdk_winbase\WinNT\service (selon la manière d'extraction) les fichiers "service.*".
 
Merci encore pour ton aide BlackGoddess.
 
   Xter.


Message édité par xterminhate le 30-12-2003 à 18:09:13
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed