C : exécuter un autre programme avec des paramètres

laetitiavincent Messages postés 61 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 19 janvier 2007 - 3 juin 2006 à 19:32
laetitiavincent Messages postés 61 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 19 janvier 2007 - 3 juin 2006 à 21:38
Bonjour

Je voudrais dans un programme en c ou c++ lancer un autre programme mais avec des paramètres qui viennent du programme.
Le problème est que j'utilise
wsprintf(nom,"programme_a_executer %s", argv[1]);
system(nom);

où le programme_a_executer a comme paramètre argv[1]

Or ces commandes fonctionnent bien sous windows mais pas sous Unix. Quelqu'un saurait qu'est-ce que je peux utiliser sous Unix à la place ?????

Merci d'avance

 Laetitia

5 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
3 juin 2006 à 19:57
Essaye de remplacer wsprintf par sprintf (car cette fonction fait partie de la libraire standard)
Si system ne marche pas sous unic, regarde du coté de exec ( fait un man exec tu devait trouver ton bonheur)

++
0
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
3 juin 2006 à 20:20
Bonjour;

J'ai trouvé des trucs [%0Ahttp://securitypronews.com/it/networksystems/spn-21-20020311ExecutingACApplicationOverTheInternetWithPHP.html ici :]

Le fichier programme_a_executer.cpp :

#include


int main(int argc, char* argv[])


{


  cout << endl << "You passed " <<

argc-1 << " arguement" << (argc-1   ==


1 ? "" : "s") << "." << endl;


  cout << (argc-1 == 1 ? "This" : "These") <<

" arguement" << (argc-1 ==   1 ? "" : "s") <<

" " << (argc-1 == 1 ? "is" : "are") << ": " <<

endl << endl;


  for(int i = 1; i < argc; i++) cout << "["


<< i << "] " << argv[i] << endl;


  return 0;


}


Dans le shell, on lance :

"programme_a_executer(pas d'extension) one -two /three"

renvoie

You passed 3 arguments. These arguments are:


[1] one


[2] –two


[3] /three
 

Ensuite pour lancer une commande shell, j'ai trouvé dans [%0Ahttp://forums.macrumors.com/archive/index.php/t-92081.html un forum]

un exemple court et un long; le court me paraît deja pas mal...


#include


#include


int


main()


{


int rv = system("ls -l ~/");


std::cout << "result code: " << rv << "\n";


return 0;


}

mais vas voir l'autre exemple il a l'air intéressant....

Bonne prog.
0
ben92600 Messages postés 56 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 11 juillet 2006
3 juin 2006 à 20:33
tu peut utilise
int execl(const char *path, const char *arg, ...);

int execlp(const char *file, const char *arg, ...);

int execle(const char *path, const char *arg, ..., char *const envp[]);

int exect(const char *path, char *const argv[], char *const envp[]);

int execv(const char *path, char *const argv[]);

int execvp(const char *file, char *const argv[]);

si tu veu plus d'information man exec ;)
0
ben92600 Messages postés 56 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 11 juillet 2006
3 juin 2006 à 20:35
et tu peu aussi les utiliser sur windo ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
laetitiavincent Messages postés 61 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 19 janvier 2007
3 juin 2006 à 21:38
Merci à tous, je vais essayer de voir si ca fonctionne bien

 Laetitia
0
Rejoignez-nous