Bonsoir!
J'ai dans mon jeu du code de "serveur" que pour l'instant j'isole dans un thread � part. Dans une partie solo, le serveur doit tourner sur la machine locale et la partie client du jeu s'y connecte via le r�seau (si on peut dire).
Apr�s quelques discussions sur un autre forum, j'envisage de passer � un diff�rent processus pour la partie serveur. J'ai toutefois quelques r�ticences, rapport princiapelement au d�buggage.
J'ai donc proc�d� a un petit test aujourd'hui : lancer un processus simple a partir du jeu et voir comment le tout r�agis (en debug puis en release).
J'ai mis en place ce code, avec une commande dans la console du jeu qui permet de lancer le processus. Le "controle" du processus est encapsul� dans une classe qui termine le processus enfant soit via une fonction soit dans le destructeur.
Pour lancer et terminer le processus, j'utilise boost::process (qui n'est pas encore dans boost). Le lancement du processus marche bien. J'ai pour l'instant une erreur lorsque j'appelle terminate() sur le processus enfant. Je n'ai pas encore cherch� l'origine du probl�me mais ce n'est de toutes mani�res pas tr�s important ici. Le fait est qu'une exception est lev�e puis logg�e puis continue son chemin jusqu'� ce que l'application crash (un probl�me dans ma strat�gie de gestion des erreur visiblement, mais c'est un autre probl�me).
Ce qui est probl�matique c'est que j'ai eu une exception et apr�s quelques minutes d'analyse j'ai quitt� le mode debug (sous visual studio 2008). J'ai continu� de chercher l'origine du probl�me un moment.
Puis j'ai d�couvert que le procesus enfant �tait toujours en train de s'executer!
Je voudrais donc savoir, en tant que d�butant dans le domaine multi-process, comment vous faites pour g�rer ce genre de cas : comment faire pour que le processus enfant ai toujours une vie limit�e par la vie du processus parent, m�me si le parent s'arr�te de mani�re abrupte ("crash")?
Partager