fullpirates
Messages postés3Date d'inscriptionmardi 13 février 2007StatutMembreDernière intervention 8 octobre 2007
-
8 oct. 2007 à 01:30
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 2007
-
8 oct. 2007 à 18:52
Bon je vous explique j'ai un travail de mi-session à remettre pour mercredi et j'ai essayer bien comme mal a faire fonctionner la commande execvp ... mais je crois que elle et moi on ne va pas ensemble puisqu'elle m'envoi toujours l'erreur errno = 10 ce qui signifie un problème de création du fils mais pourtant quand je passe à "la mitaine" ce qui veut dire que je met directement sans passer par des variables dans
char *parametre[20] = {"ps","-H",NULL};
execvp("ps",parametre);
*bien sur disposer dans les places approprier dans mon programmes ...
ceci marche !
mais quand je le remplace par le programme ci-dessous sa ne marche pas
je ne serait pas comment vous remercier si vous pouvez m'aider car hier jai tourner en rond de 12h a 24h et j'en suis rendu au meme point quand ce moment
main ( int argc , char *argv [ ] )
{
int vrpf = 1;
int statut = -1;
int retourExecl = 0;
char commande [21];
char argument[21];
char *parametre[] = {commande, argument, NULL};
bool quitter = false;
int a = 0;
int b = 0;
int c = 0;
system ( "clear" );
cout << "Bienvenue dans le Marshell!" << endl;
fullpirates
Messages postés3Date d'inscriptionmardi 13 février 2007StatutMembreDernière intervention 8 octobre 2007 8 oct. 2007 à 02:01
Ah ! et en passsant quand je sort le execvp() du fils pour voir son erreur elle me donne l'erreur 2 qui no such file or directory mais pourtant quand j'affiche mes variables elle sont identiques à ce qui devrait être écrit dans ces variables puisque quand j'écrit directement dans execvp() se qui est dans mes variables sa marches ...
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 20071 8 oct. 2007 à 18:52
Bonjour,
y'a un problème avec la façon dont tu alloues ta variable parametre, donc commence avec une commande vide c'est mieux
char ** parametre;
ensuite tu dois allouer parametre comme un tableau de char *
donc la tu fais :
parametre = (char **)malloc(20*sizeof(char *));
pour allouer 20 arguments a ta commande (incluant la commande elle-meme et le NULL, bref pas 20 mais 18)
ensuite tu fais
parametre[0] = "ps";
parametre[1] = "-aux";
parametre[2] = NULL;
ensuite je te conseille d'utiliser strcpy plutot que ta copie parce que ca complique la lecture et au final ça fait strcpy
Voila essaye ça et dis moi si ça marche