[C++]Probleme avec EXECV(P) sous Windows

Probleme avec EXECV(P) sous Windows [C++] - C++ - Programmation

Marsh Posté le 07-01-2004 à 11:03:59    

bonjour,
 
j'ai un petit probleme : j'essaie dans un code C++ d'integrer un outil de maillage qui se lance en ligne de commandes, avec un certain nombre d'arguments. J'utilise donc _execv ou _execvp fournies dans Process.h.
 
Le chemin vers l'executable du mailleur est dans le path de windows. Voici comment je definis les arguments et comment je lance le mailleur :
 
 
char *arguments[8];
 char buffer[30];
 arguments[0] = "C:\devel\bamg\Debug\bamg";
 arguments[1] = "-g";
 arguments[2] = GeometryFileName.GetBuffer();
 arguments[3] = "-o";
 arguments[4] = MeshFileName.GetBuffer();
 arguments[5] = "-thetaquad";
 sprintf(&(buffer[0]), "%f", angle);
 arguments[6] = &(buffer[0]);
 arguments[7] = "-2q";
 
 //Appel systeme
 i = _execv(arguments[0], arguments);  
 bidule = errno;
 
errno indique 22 comme code d'erreur , soit une erreur d'argument. or tous mes arguments sont censes etre bons , j'ai teste cette ligne de commande en dehors de ce contexte.
 
De plus lorsque je vire le chemin complet vers l'executable j'ai une erreur  mémoire qui se produit, alors qu'avec mon path, ca devrait etre bon.
 
Ou puis je avoir faitune erreur :??:
 
passke la, je vois pas :fou:

Reply

Marsh Posté le 07-01-2004 à 11:03:59   

Reply

Marsh Posté le 07-01-2004 à 11:05:20    

"C:\devel\bamg\Debug\bamg"; << la pe ? :??:
 
"C:\\devel\\bamg\\Debug\\bamg"; :o


Message édité par chrisbk le 07-01-2004 à 11:05:39
Reply

Marsh Posté le 07-01-2004 à 11:12:11    

pourquoi un double \ ?
 
bon je v essayer :)

Reply

Marsh Posté le 07-01-2004 à 11:13:51    

BotMan a écrit :

pourquoi un double \ ?


\ c'est pour escaper les caractères :o
Quand tu fais printf("\n" ); tu crois qu'il t'affiche \n ou un retour chariot ? :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 07-01-2004 à 11:19:53    

ah oui cai vrai j'avais ooblié :o
 
mais ca plante, acces violation : 0xC0000005 , genial :/

Reply

Marsh Posté le 07-01-2004 à 11:20:53    

BotMan a écrit :

ah oui cai vrai j'avais ooblié :o
 
mais ca plante, acces violation : 0xC0000005 , genial :/


 
Ce qui mÄetonnes ce que tu specifie null part le nombre d'arguments . T sur qu'il faut pas un NULL a la fin de ton tableau d'arugements ?

Reply

Marsh Posté le 07-01-2004 à 11:22:20    

et si, gagné [:udok]
 

Citation :


The _execv, _execve, _execvp, and _execvpe calls are useful when the number of parameters to the new process is variable. Pointers to the parameters are passed as an array, argv. The parameter argv[0] is usually a pointer to cmdname. The parameters argv[1] through argv[n] point to the character strings forming the new parameter list. The parameter argv[n+1] must be a NULL pointer to mark the end of the parameter list.


Message édité par chrisbk le 07-01-2004 à 11:22:46
Reply

Marsh Posté le 07-01-2004 à 11:22:42    

Ui, il faut un NULL.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 07-01-2004 à 11:26:42    

BOTMAN KESTUFOUS ?? SKOI DSE CODE DE MERDE :FOU: :FOU:

Reply

Marsh Posté le 07-01-2004 à 11:28:38    

(Faut définir arguments comme un char[9], du coup, pour rajouter le NULL :o J'adore C/C++ [:icon7])


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 07-01-2004 à 11:28:38   

Reply

Marsh Posté le 07-01-2004 à 11:29:34    

Taiche a écrit :

(Faut définir arguments comme un char[9], du coup, pour rajouter le NULL :o J'adore C/C++ [:icon7])


 
t'as maté mon paté de cette nuit ? [:itm]

Reply

Marsh Posté le 07-01-2004 à 11:31:47    

chrisbk a écrit :


t'as maté mon paté de cette nuit ? [:itm]


:??: Oussa ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 07-01-2004 à 11:32:26    

Reply

Marsh Posté le 07-01-2004 à 11:34:31    


Ah ouais, j'avais bien rigolé [:ddr555]
Mais bon, on va pas troller ici pour pas pourrir le topic :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 07-01-2004 à 11:36:22    

Taiche a écrit :


Ah ouais, j'avais bien rigolé [:ddr555]
Mais bon, on va pas troller ici pour pas pourrir le topic :o


et alors, ta fine explication ? :D
pis il est resolu stopic, c juste botman qui fait l'ane et qui lit pas la doc [:icon11] :D


Message édité par chrisbk le 07-01-2004 à 11:36:55
Reply

Marsh Posté le 07-01-2004 à 11:40:43    

chrisbk a écrit :


et alors, ta fine explication ? :D


Ah ba j'en sais rien, moi :o J'connais pas les méandres de C++, j'ai d'jà du mal avec les pointeurs et les références... :D


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 07-01-2004 à 11:42:37    

Taiche a écrit :


Ah ba j'en sais rien, moi :o J'connais pas les méandres de C++, j'ai d'jà du mal avec les pointeurs et les références... :D


 
pour la petite histoire la reponse a la question bonus c'est :
 
test( (void*)(tB*) t);
 
et tout ceci vient du fait que :
(tA*)t != (tB *)t (en terme d'adresse)
la grosse feinte du pere lafeinte quoi

Reply

Marsh Posté le 07-01-2004 à 12:17:54    

chrisbk a écrit :

BOTMAN KESTUFOUS ?? SKOI DSE CODE DE MERDE :FOU: :FOU:

finalement j'ai utilisé system au lieu d'execvp ca amrchebcp mieux :D :sol:

Reply

Marsh Posté le 07-01-2004 à 12:20:09    

:sweat:

Reply

Marsh Posté le 07-01-2004 à 12:22:06    

:??:

Reply

Marsh Posté le 07-01-2004 à 12:23:59    

on se decarcasse pour toi et toi tu nous trompes avec cette petite fonction a la con, bravo [:sisicaivrai]

Reply

Marsh Posté le 07-01-2004 à 15:06:49    

:sol:

Reply

Marsh Posté le 07-01-2004 à 15:09:25    

creve tout nu :o

Reply

Marsh Posté le 16-01-2004 à 11:26:46    

kestu remontes ce topic toi :??:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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