Accueil > Forum > > > > Executer une commande avec exec
Executer une commande avec exec
lundi 10 octobre 2011 à 11:47:03 |
Executer une commande avec exec

andoid
|
Bonjour!
j'aimerai exécuter une commande avec exec mais j'arrive pas: je m'explique
je recupere la saisie de la commande sur le terminal grace a fgets:
char chaine[TAILLE];
fgets(chaine,TAILLE,stdin);
une fois la recuperer dans la chaine je sais pas comment l'éxéxuter.
C'est à ce niveau que je bloque 
|
|
lundi 10 octobre 2011 à 12:09:11 |
Re : Executer une commande avec exec

CptPingu
|
Pourquoi faire un fgets, normalement réservé à la lecture dans un fichier, plutôt qu'un simple scanf ?
Fais voir le code de ton exec. (execvp normalement).
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
lundi 10 octobre 2011 à 13:00:25 |
Re : Executer une commande avec exec

andoid
|
char chaine[TAILLE];
fgets(chaine,TAILLE,stdin);
execvp(chaine,NULL);
Mais il marche puis exec ne fais pas ce que je veuts
|
|
lundi 10 octobre 2011 à 13:24:45 |
Re : Executer une commande avec exec

CptPingu
|
Le 2ème argument est mauvais. Il est dit dans la documentation, que ça doit être un tableau qui contient en premier argument le nom de l'exécutable, suivit de ses arguments, puis un NULL.
Exemple donné dans la doc officielle (que tu n'as pas du lire):
Code C/C++ :
const char* paramList[] = {"/bin/ls", "-l", "/u/userid/dirname", NULL};
execvp("/bin/ls", paramList);
Ce qui donne pour toi:
Code C/C++ :
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define TAILLE 256
#define XSTR(X) #X
#define STR(X) XSTR(X)
int main(void)
{
char* cmd[2];
char chaine[TAILLE];
int ret = 0;
int size = 0;
scanf("%"STR(TAILLE)"s", chaine);
size = strlen(chaine);
cmd[0] = malloc((size + 1) * sizeof(char));
strncpy(cmd[0], chaine, size);
cmd[0][size] = 0;
cmd[1] = NULL;
ret = execvp(chaine, cmd);
printf("Error = %i\n", ret);
free(cmd[0]);
return 0;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
lundi 10 octobre 2011 à 14:05:00 |
Re : Executer une commande avec exec

andoid
|
A priori le code il marche bie. Je dois un shell et jai codé les commandes ls, cd, pwd, redirection, cat donc si je reçois en ligne de commande ls comment je dois faire pour qu'il execute mon ls sachant que j'arrive à interpreter la commande écrite.
je pense que je vais faire
const char *cmd[]={"path de mon executable",NULL}
execvp(path,cmd);
|
|
lundi 10 octobre 2011 à 14:20:19 |
Re : Executer une commande avec exec

CptPingu
|
Avec l'exemple que je t'ai donné, tu as tout ce qu'il faut pour réussir ton shell.
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
lundi 10 octobre 2011 à 14:33:20 |
Re : Executer une commande avec exec

andoid
|
Un grand merci par contre dans le code que tu m'as passé j'ai pas trop compris
cmd[0][size] = 0;
|
|
lundi 10 octobre 2011 à 14:51:04 |
Re : Executer une commande avec exec

CptPingu
|
cmd est un tableau de chaîne de caractères.
Dans la première case, il y a une chaîne qui contient le nom du binaire.
Sur cette première chaîne, j'ai copié le nom du binaire, mais sans le 0 terminal.
Donc je vais à la dernière case de la chaîne, et j'appose un 0 terminal (0 == NULL == '\0')
(Je rappelle qu'une chaîne de caractères se termine toujours par un 0 terminal).
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
lundi 10 octobre 2011 à 15:25:33 |
Re : Executer une commande avec exec

andoid
|
merci!! Là j'ai bien compris exec
|
|
lundi 10 octobre 2011 à 15:30:36 |
Re : Executer une commande avec exec

andoid
|
Bon bref une derniere question par exemple ma commande cat qui j'ai codée elle prend un argument commen faire pour placer l'arguments dans le tableau cmd
|
|
Cette discussion est classée dans : chaine, commande, executer, fgets, exec
Répondre à ce message
Sujets en rapport avec ce message
Executer une commande DOS en C++ [ par Kheo ]
Quel API faut il utiliser pour executer une commande DOS depuis un source C++.J'ai trouvé _exec mais ca ne fait rien.../ Kheo /
Bleme avec la commande strncpy [ par FeetloveR666 ]
Salut a tous,Bon voila g un soucy avec la commande strncpy permattant d'extraire une parti d'un chaine de caratère ( exos demander en tp )D'apres ce q
Commande wsprintf et SendMessage [ par FeetloveR59 ]
Bon je cherche a comprendre comment marche ces deux fontionsD'apres ce que g compris wsprintf formate une chaine de caractere et SendMessage envoie ce
Exec??? [ par samki ]
Bonjour,Je développe une application en MFC qui permet de gérer un logiciel.Ce logiciel fournit des ligne de commande pour créer un projet et le compi
Executer une chaine de caracteres... [ par Clonk ]
Bonjour,Je voudrais, por alléger mon appli, pouvoir executer une fonction (déjà définie dans mon code) dont le nom est contenu dans une variable. Par
executer une commande systeme [ par anthraxx ]
bonjour,je voulais savoir si quelqu'un connait un moyen d'éxecuter des commandes su systemes d'exploitation sous Windows, et d'en récupérer l'output.I
Cin capricieux... [ par DJeS ]
c'est sans doute tres idiot mais bon voila...je fais un ptit prog test pr m'assurer que l'erreur viens bien d'ou je pense...:#include int main(){char
Comment executer une commande systeme sur Linux avec gcc ??? [ par jean84 ]
Salut a tous ! Je voudrais savoir s'il existe une commande telle que system() sous linux ??? Si oui laquelle ??? Merci "Avant même de fonctionner, tou
executer commande [ par edpunisher ]
kikoo aidez moi pleaaaaaaaze je voudrai executer une commande unix et retourner le resultat dans une variable prédefini j offre 100 000$ a ki pourra m
executer une commande dos [ par Daimadoshi ]
slt tlm, voila je voudrai pendant un programme executer une commande dos. j'ai pensé lancer ma commande avec une ligne dans ce genre mais cela ne semb
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|