begin process at 2012 05 29 08:36:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

erreur sur les tubes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

erreur sur les tubes

mardi 25 octobre 2011 à 10:22:13 | erreur sur les tubes

andoid

Bonjour à tous:
J'essais d'exuter une commande passé ligne de commande avec un pipe:
là je suis en mode test:
je veux juste exécuter ls -l |grep tube.c je sais le faire manuellement avec execlp("ls","ls","-l",NULL) mais je veux pas cela car dans mon programme je sais pas ce que l'utilisateur va mettre. Dans ce programme de test je tient pas compte du "-l" de "ls" et "tube." de "grep" donc je vais juste mettre ls | grep. Le probléme que j'ai est que si je tape ls | grep il fait rien , il faut que je mette un pipe vide à la fin pour qu'il l'execute genre ls|grep| j'arrive pas à voir le probleme:

voici le code

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#define TAILLE 100



char** ispipe(char* commande)
{


int i=0;
char *c;
char** arg=malloc((strlen(commande)+1)*sizeof(char*));

c = strtok(commande, "|");
do {

arg[i]=c;
i++;
//puts(c);
c = strtok(0," |");

}while (c);

printf("arg[1] =%s\n",arg[1]);
return arg;
/*Libération de la mémoire occupée*/
free(arg);

}



int main ()

{
pid_t pid;
int tube[2];
char cmd[TAILLE];
/*Je recupére la ligne de commande*/
fgets(cmd,TAILLE,stdin);
char ** args=ispipe(cmd);


if(pipe(tube))
perror("pipe failled");


if((pid = fork()) == 0)
{/* FILS */

fclose(stdout);

dup(tube[1]);

close(tube[0]);
execlp(args[0],args[0],"-l",NULL);}
else
{
fclose(stdin);

dup(tube[0]);

close(tube[1]);
execlp(args[1],args[1],"tube.c",NULL);}

}
mardi 25 octobre 2011 à 15:38:30 | Re : erreur sur les tubes

patatalo

Membre Club Administrateur CodeS-SourceS
salut,




Ouais, dans les medias aussi ils n'arretent pas de se tromper avec les tubes...

grep est un filtre, si tu ne filtres rien, il est peut-être normal que tu obtiennes rien.

@++
mardi 25 octobre 2011 à 16:19:05 | Re : erreur sur les tubes

andoid

sûr sûr


Cette discussion est classée dans : commande, char, arg, ls, tube


Répondre à ce message

Sujets en rapport avec ce message

Parametre sur la ligne de commande [ par payen ] Salut a tous,j'ai un petit souci en C++ ...alors voila : j'ai ecrit un code qui prend comme parametres sur la ligne de commande 2 entiers. Ensuite, pl return tableau de caracteres en C++ [ par sozer2 ] Bonjour j'aimerai savoir comment retourner correctement un tableau de caractère en C++Voici mon code qui contient une erreur au niveau du return et au aide sur erreur de syntaxe [ par skadomers ] salut à tous.voila je suis en train de créer un programme , permettant de faire des fiches de commande par client. Dans un premier temps ont rempli le signification de char * * [ par marco_1980 ] Bonsoir a tous,J'aimerais savoir quel est la signification exact de ce parametrevoid main (char  ** arg_vec)et si est-ce que c'est bien correct d'écri Execution d'une commande [ par laetitiavincent ] Bonjour tout le mondeQuelqu'un pourrait m'aiderJe cherche comment dans un programme en c lancer une commande simple sous dos : en fait je voudrais fai strcat enfin pas tout a fait mais presque [ par yserver ] bonjours tout le monde et merci de lir mon poste merci pour toutes vos reponseEn fait le titres est pas tout a fait bon mais c'etait plsu cours le pb ls -l en C [ par ouaichvonvon ] Bonjour a tous!! J'ai programmé la commande linux ls en C et maintenant je dois modofié mon premier programme pour faire la commande ls -l. Je sai Gros soucis Ping en c [ par mohken ] Bonjour, J'avais déjà poser une question à ce sujet mais j'ai encore un problème pour pinger. J'ai récupéré une fonction qui permet de le faire sur le faire un "ls" mais en C [ par timy94 ] bonjour,Je voudrais ecrire quelques lignes de codes pour remplacer la commande ls sous linux, pour me passer de la commandesystem("ls"); qui ne renvoi Help commande "system(char *commande) [ par Lnx ] Bonjour,j'ai un petit soucis avec la commande system(cher command)j'ai " nom de commande ou de fichier incorrecte", alors qu'avec un toto.bat ça fonct


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales