Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2755 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Linux] Utiliser une commande dans un programme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Linux] Utiliser une commande dans un programme

n°277024
Olivier51
Posté le 28-12-2002 à 23:59:45  profilanswer
 

Comment faites vous pour utiliser une commande dans un programme en C, j'ai essayé :

Code :
  1. #include <unistd.h>
  2. #include <errno.h>
  3. int main(void)
  4. {
  5. char **tmp1 = NULL;
  6. char **tmp2 = NULL;
  7. if ( execve("/bin/ls",tmp1,tmp2) == -1)
  8.  printf("Erreur : %i\n",errno);
  9. return 0;
  10. }


Mais le programme me renvoie :
Erreur : 2

mood
Publicité
Posté le 28-12-2002 à 23:59:45  profilanswer
 

n°277032
MrTonio
Posté le 29-12-2002 à 00:19:48  profilanswer
 

Olivier51 a écrit :

Comment faites vous pour utiliser une commande dans un programme en C, j'ai essayé :

Code :
  1. #include <unistd.h>
  2. #include <errno.h>
  3. int main(void)
  4. {
  5. char **tmp1 = NULL;
  6. char **tmp2 = NULL;
  7. if ( execve("/bin/ls",tmp1,tmp2) == -1)
  8.  printf("Erreur : %i\n",errno);
  9. return 0;
  10. }


Mais le programme me renvoie :
Erreur : 2


 :non:  execve ne s utilise pas de cette facon !
 
int execve(const char *path, char *const argv[], char *const envp[]);
sinon utilise execlp :
int execlp(const char *file, const char *arg, ...);

Code :
  1. execlp("/bin/ls", "/bin/ls", NULL);


Message édité par MrTonio le 29-12-2002 à 00:23:04

---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
n°277034
Olivier51
Posté le 29-12-2002 à 00:37:21  profilanswer
 

Oui en faite je viens de trouver la méthode pour execve :

Code :
  1. #include <unistd.h>
  2. #include <errno.h>
  3. int main(void)
  4. {
  5. char *param[]={"/bin/ls",NULL};
  6. if (execve(param[0],param,NULL) == -1)
  7. printf("Erreur : %i\n",errno);
  8. return 0;
  9. }


 
J'avais oublié que dans les paramètres on comptais aussi le nom du programme ...
 
Merci comme même mrtonio.


Message édité par Olivier51 le 29-12-2002 à 00:43:32
n°277268
Olivier51
Posté le 29-12-2002 à 23:21:09  profilanswer
 

Par contre, je fais comment pour exploiter dans mon programme ce que ma commande lancer avec execve m'a renvoyer ??? Est-ce qu'il faut que j'utilise une autre instruction pour lancer ma commande ou execve peut le faire aussi ?

n°277307
MrTonio
Posté le 30-12-2002 à 01:23:42  profilanswer
 

Olivier51 a écrit :

Par contre, je fais comment pour exploiter dans mon programme ce que ma commande lancer avec execve m'a renvoyer ??? Est-ce qu'il faut que j'utilise une autre instruction pour lancer ma commande ou execve peut le faire aussi ?


 
il faut ke tu fork ...
sinon ton programme est stoppé apres l execve
 

Code :
  1. #include <unistd.h>
  2. #include <errno.h>
  3. int main(void)
  4. {
  5.   char *param[]={"/bin/ls",NULL};
  6.   if (!fork())
  7.   {
  8.     if (execve(param[0],param,NULL) == -1) 
  9.     {
  10.       printf("Erreur : %i\n",errno);
  11.       exit(1);
  12.     }
  13.   else
  14.   {
  15.      wait();
  16.   }
  17. return 0;
  18. }


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
n°277382
Olivier51
Posté le 30-12-2002 à 11:43:16  profilanswer
 

Ok, merci pour le renseignement, mais le résultat, je le récupère où ?

n°277384
lorill
Posté le 30-12-2002 à 11:45:31  profilanswer
 
n°277486
Olivier51
Posté le 30-12-2002 à 14:43:17  profilanswer
 

Merci lorill, je vais essayer ...

n°277910
weed
Posté le 31-12-2002 à 18:09:09  profilanswer
 


 
avec cette commande peut on lancer n'importe quel exe ou bat
cela peut etre utilile pour trouver rapidement une ip en lancant un simple ipconfig o lieu de s'embeter avec des commandes C qui ne sont pas evidente a utiliser  :sleep:  
normal oui, c juste une petite confirmation parce que je n'ai vu que des ls ou truc ds le genre  :lol:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Linux] Utiliser une commande dans un programme

 

Sujets relatifs
problème avec la commande eval [shell de Bourne](lire dans un fichier ascii) pourquoi mon programme ne marche pas ?
[Conseil] Quels languages utiliser pour faire un bon site ?[PHP et C++/Linux] Exec(), et processus en tache de fond semi-bloquant
probleme sur la commande echo [shell de Bourne]Commande count(*) ou max ??
Programme en mode console avec C++ Builder ![php] commande sql
Comment utiliser des variables en Assembleur...[word arf !!!] pourquoi cette commande fait elle ça
Plus de sujets relatifs à : [Linux] Utiliser une commande dans un programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR