begin process at 2012 05 30 07:16:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

question existentielle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

question existentielle

mardi 18 septembre 2007 à 15:08:14 | question existentielle

LaTatadu91

Bonjour,

Voila j'ai un probleme avec un programme qui par moment peut générer des erreurs: sur des strcat ou autre bref une fenetre d'erreur s'affiche avec le traditionnel "abandonner,recommencer,ignorer"
le probleme est que cette application d'apres le gestionnaire des taches est encore en cours d'execution, moi je m'attendais a ce qu'il affiche "ne reponds pas".
le truc est que je veux pondre un petit programme qui regarde les processus lancés et si "ne reponds plus" ben je relance...
la je trouve ca louche que il y ait une erreur détéctée et que ca tourne encore ...
vous en pensez quoi?

 

mardi 18 septembre 2007 à 17:38:18 | Re : question existentielle

SAKingdom

Membre Club
Sur des strcat ? Si tu manipule des zones mémoires, c'est presque sur qu'il s'agit d'un débordement tampon.
Démarre le débuggeur pour localiser la zone surchargé.

C++ (@++)

mercredi 19 septembre 2007 à 09:58:04 | Re : question existentielle

LaTatadu91

oui enfin la pour tester mon 2eme programme: qui surveille le processus et relance si processus planté, j'ai fait expres de faire planter mon processus en placant un strcat bidon....
c'était juste pour forcer le plantage.
car mon application est susceptible de planter à n'importe quel moment mais malgres toutes mes sécurités, on ne sait jamais!
du coup c'est a partir de la que j'ai imaginer faire ma surveillance de processus!
Mais dans certains cas de plantage en fait mon processus est encore dans le gestionnaire de taches noté comme : "encours d'execution"

voila du coup ma surveillance ne sert a  rien dans ces cas precis!
donc je me demandais comment detecter que mon processus plante?

 

mercredi 19 septembre 2007 à 12:01:21 | Re : question existentielle

juju12

Envoie au processus ciblé un message asynchrone (avec PostThreadMessage) personnalisé, qui doit avoir pour but de renvoyer un message au processus testant la cible. Si le premier est planté, il ne répondra jamais et donc au bout d'un certain temps tu peux le considérer comme planté.
mercredi 19 septembre 2007 à 13:17:42 | Re : question existentielle

LaTatadu91

mais justement ce n'est pas ce que fait le taskmanager?

pour mon deuxieme programme j'étais parti sur du VB.net...

on peut communiquer? de la meme facon?


 

mercredi 19 septembre 2007 à 13:33:49 | Re : question existentielle

juju12

Ah je ne sais pas; en tout cas cette méthode permet de surveiller seulement l'activité d'un seul thread, si ton prog est multithread il faut envoyer un message à chaque thread pour vérifier qu'aucun n'est planté. Quant au VB.net...si tu peux gérer les messages ça doit marcher aussi, dans le cas contraire faut trouver autre chose.
mercredi 19 septembre 2007 à 13:39:36 | Re : question existentielle

LaTatadu91

ouais c'est du multithread effectivement
et la j'avais fait un prog VB.net qui surveiller la presence du processus dans la liste des taches et son état ....
on ne peut pas communiquer direct avec le programme?juste les threads?

apparthée:
Mais ta réponse me fait me remettre en cause sur autre chose
car j'ai un module qui surveille mes différents threads et je n'ai pas utiliser cette fonction de Message, j'ai utilisé un compteur
je vérifie ce compteur de l'exeterieur toutes les X min et si le compteur = compteur X minutes avant ben j'en deduis que mon thread est planté
donc je killl et relance!



 

mercredi 19 septembre 2007 à 13:51:54 | Re : question existentielle

LaTatadu91

je viens de faire un test et mon probleme est que : mon appli tourne puis genere une erreur(provoquée volontaireemnt pr le test)
je laisse en l'état ( je n'appuie ni sur recommencer,ignorer,abandonner)
puis ja lance un autre programme qui sert d'IHM qui communique avec mon programme principal.
et la miracle les 2 programmes communiquent correctement!

du coup je n'arriverais jamais a savoir si mon programme principal est planté vu que celui ci ne plante pas meme lors d'erreur détécté....
c'est louche?! en tout cas ca me depasse un peu....

 

mercredi 19 septembre 2007 à 14:38:37 | Re : question existentielle

juju12

Un processus est composé de threads (c'est ça qui est exécuté) donc quand tu veux communiquer avec un processus tu communiques avec un de ses threads. Le truc c'est qu'alors il faut que tu surveilles tous les threads pour savoir si le processus a planté => gestion des messages à mettre en place dans TOUS les threads du prog ciblé; ou alors ton compteur ça marche sûrement aussi mais il faut en mettre un dans chaque thread pareil.
mercredi 19 septembre 2007 à 15:19:48 | Re : question existentielle

LaTatadu91

oui oui bien sur j'ai mis un compteur pour chaque thread
a priori ca marche mais c'est vrai que c'est de la bidouille....

pr ma surveillance de mon processus c'est trop louche en gros faudrait que je refasse tout avec des try catch et si pb détécté ben je quitte l'appli et hop ensuite elle est relancée automatiquement, c'est peut etre la seul chose a faire, vu qu'apparement mes threads fonctionnent encore malgres tout!

 


1 2

Cette discussion est classée dans : programme, erreur, probleme, question, existentielle


Répondre à ce message

Sujets en rapport avec ce message

Probleme en C :/ [ par ChrisFactor ] Voila je fait une formation par le biais de l'etat, et dans ce qu'ils m'apprenne beaucoup de probleme se pose, j'ai comme programme Microsoft C++ et D probleme pour deposer un programme [ par nolius ] j'ai programmer un quakelike que je voudrais ajouter sur ce site. a cahque fois que j'essaye de l'ajouter je tombe sur une page d'erreur.est ce que c' VS.NET 2003->probleme fstream [ par supergrey ] Bonjour, jai depuis quelques temps VS2003 et je n'arrive pas a transférer mes programme développés avec VC++6.Voila l'erreur::error C2065: 'ofstream'  Probleme Visual C++ 6 [ par supergrey ] Bonjour, j'ai fait un programme a partir de la source d'un sniffer et mon programme fonctionne seulement en mode debogage (sous VC++6).Comment est-ce question d'allocation probleme char char* Question simple [ par youpiyoyo ] voici mon probleme://///////////////////////////////////////////////////int rec = recv(ns,buffer,64*sizeof(char),0); buffer[rec] = '\0' ; //cout Question de faisabilité [ par talaron ] Sltj'ai un programme de traitement d'images en c++ et je vais surement devoir programmer la meme chose dans un PIC.Je voudrais savoir s'il existe un c Probleme Authentification SQL Serveur [ par Poirotzs ] Salut , J'ai un programme en C++ avec ihm que j'ai fait avec Borland CPP Builder 5. Je me sert du composant TQuery pour lier mon programme avec mon l Windows Installer [ par plomtbb ] Bonjourvoilà j'ai fait un petit programme, qui ouvre une fenetre sans rien, truc sur basique.mais en fait je voulais tester de créer un MSI avec la so Probleme de lancement d'un programme Allegro [ par Milli ] boujourj ai codé mon jeu (pacman) sur window98 avec djgpp j utilise la librairie allegromon mode graphique est 1024*768, 256 couleurstout marche corre Probleme avec le programme de resolution systemes [ par ldespi ] Bonjour,je suis vraiment trés interessé par le programme developpé par White_angel 73 au sujet de la résolution d'un systeme d'equation par les method


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,635 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales