Voici les prototypes des fonctions utilisées:
char *GetParameter(char *buf,int nr);
char *GetParameter2(char *buf,int nr);
La fonction CommandParser recupere l'argument écris apres $cmd et dois le transmettre au thread.
Exemple:
Si dans buf il y a:
$cmd "ceci est une commande de test"
Le resultat de GetParameter(buf,3) est: $cmd
Le resultat de GetParameter2(buf,2) est: ceci est une commande de test
Or lorsque j execute mon code, dans mon GetParameter2(buf,2) j'ai bien: ceci est une commande de test, mais dans mon lpParam j'ai autre chose (le printf m'indique que la valeur est: md)
Par contre lorsque je passe un entier a la place d'une chaine ça marche
Comment faire pour que cela marche avec les chaines ?
olbal
Messages postés20Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention29 septembre 2006 22 févr. 2006 à 12:19
Par exemple si buf pointe sur une variable locale de la fonction appelant CommandParser, la variable locale à de grande chance d'être détruite quand le thread va vouloir la lire... Si buf pointe sur une variable static, pas de problème si la variable n'est pas modifiée pendant que le thread l'utilise.
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 févr. 2006 à 12:20
Faut voir d'où vient ce *buf, ne serait pas un buffer local à une fonction qui deviendrait illico invalide après sortie de cette fonction ?
A croire puisque fonctionne avec une constante.
cs_alex124
Messages postés6Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention22 février 2006 22 févr. 2006 à 14:05
Apparament j ai reussi a corriger le probleme, j'ai appeler le code pour recevoir le buffer directement dans la fonction commandparser et sa transmet la bonne chaine de caractere. Ca devait etre un probleme de variables globales/locales, merci a vous deux.