begin process at 2012 05 28 22:23:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Connaître le résultat retournée par la commande system


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

Connaître le résultat retournée par la commande system

samedi 18 mars 2006 à 17:46:10 | Connaître le résultat retournée par la commande system

pcmanprogrammeur

Bonjour!
Je suis actuellement en train de créer un programme en C sous LINUX où je dois aller visiter un fichier texte.
Je crée une variable :
char commande = "grep \"txt\" monfichier.txt | wc -l";
Ensuite je veux faire :
if(system(commande)==0)
{
printf("Aucun résultat trouvé");
}
else
{
printf("Des résultats ont été trouvés");
}
Le problème à lieu à la ligne if(system(commande)==0).
Si je fais printf("%s",system(commande)); le nombre de lignes qui contient "txt" s'affiche correctement.
Par conséquent, je pense qu'on ne peut vérifier l'égalité sur la commande system.
Ai-je raison?
samedi 18 mars 2006 à 17:55:18 | Re : Connaître le résultat retournée par la commande system

mondrone

Membre Club
Tu peux essayer avec un dup sur le stdout ?
tu dois pouvoir, si je ne me trompe (je ne suis pas très a l'aise avec ces concepts) récupérer le flux de la console dans un fichier par exemple, et ensuite tu n'as plus qu'à relire ce dernier pour traiter les résultats comme tu l'entend, et ainsi savoir par la même si tu as des résultats !

Mais c'est peut être compliqué pour ce que tu cherches à faire.... mais c'est la seule méthode que je vois personnelllement !


  Qui ne tente rien...
  Ne risque pas d'avoir grand chose !!!

dimanche 19 mars 2006 à 10:09:33 | Re : Connaître le résultat retournée par la commande system

pcmanprogrammeur

Merci de ta réponse!

Tu veux donc dire que je dois faire de la façon suivante :

char commande = "grep \"txt\" monfichier.txt | wc -l >temp.txt";

Après je fais un fopen de mon fichier temp.txt. Je lis la première ligne et après je fais ma vérification.

C'est bien ce que tu voulais dire?

dimanche 19 mars 2006 à 13:47:26 | Re : Connaître le résultat retournée par la commande system

mondrone

Membre Club
Ce que je voulais dire, c'est qu'il est possible de détourner le stdout pour que les informations qui arrivent normalement à la console arrivent autre part. Je sais que ca peut marcher par exemple pour envoyer les infos via le réseau, mais je n'ai jamais testé l'envoi direct vers un fichier.

Ce serait à priori une synthaxe de la sorte :

close(1); dup(connfd);

connfd était alors le socket que j'utilisais pour l'envoi de donées via le réseau.
Il me sufisait alors d'écrire sur stdout pour que le résultat n'aille pas sur la console, mais vers le client réseau.

Je ne peut en aucun cas promettre que c'est la bonne solution pour ne pas m'y connaitre assez en la matière.
Mais tu peut essayer de mettre ton handle fichier (si ce ne sont pas les bons termes, corrigez moi, pareil, manque d'habitude)
à la place de connfd (genre : FILE *fichier donnerai dup(fichier))
Si jamais ce n'est pas ca, j'aurais essayé de t'aidé



  Qui ne tente rien...
  Ne risque pas d'avoir grand chose !!!

dimanche 19 mars 2006 à 21:30:43 | Re : Connaître le résultat retournée par la commande system

pcmanprogrammeur

Oulaaaaaaaaa !!!!
Je veux pas dire mais là ça me dépasse!!!
Me faudrait un vrai exemple mais n'oublie pas c'est du C et pas un shell.
Merci d'avance.
A+
PS : Même si tu peux pas mieux faire, dis-le.
dimanche 19 mars 2006 à 21:40:18 | Re : Connaître le résultat retournée par la commande system

mondrone

Membre Club
euh, déjà, si tu travail sous linux, tout étant fait en C si je ne m'abuse, de toute manière, la sortie standard stdout est sur la console. J'avais bien compris que tu cherchais du C. Mais j'ai testé ma méthode et elle me renvoi une erreur de compilation car le dup que je faisais en cours marche sur des sockets et pas sur des fichiers. Je reste persuadé que on peut le faire d'une manière qui s'en rapproche, je continue à chercher, mais quand j'en aurais le temps, c'est à dire en ce moment malheureusement pas souvent. Je te conseil donc vivement de demander à d'autres personnes pour résoudre ton problème !


  Qui ne tente rien...
  Ne risque pas d'avoir grand chose !!!

dimanche 19 mars 2006 à 22:57:33 | Re : Connaître le résultat retournée par la commande system

pcmanprogrammeur

D'accord !!!
Merci de ton aide.
Essai de faire de ton mieux si tu peux trouver une solution.
Merci d'avance!
Si quelqu'un d'autre à une idée, merci de m'aider.


Cette discussion est classée dans : system, txt, printf, résultat, commande


Répondre à ce message

Sujets en rapport avec ce message

commande system sur c++ [ par overfun ] Comment fait-on pour executer une commande dos sur c++ ? merci Enregistrer en HEXA un texte avec gcc !! [ par UncleShu ] /* * Ce programme affiche le fichier en HEXADECIMAL et se copie lui-même avec * une autre exetenstion (.txt). Moi je voudrais qui affiche le fichier * Pb avec 'SYSTEM' [ par AtomicREW ] Je vous previens tout de suite mon code est vraiment foireux, j'ai commence le C qu'aujourd'hui et sans doc a proprement dit. J'ai mis la ligne où Dev pas voir une commande system() [ par bapt1080 ] j'aimerais savoir si il est possible de ne pas voir la fenêtre system apparaitre et se refermer quand on lance une commande system()(system(dir)par ex PING pb avec system() Visible [ par JCpp ] Je voudrai réaliser un prog. PINGJ'en ai trouvé un prog. que je trouve bien, et qui est rapide pour savoir ci il y a un serveur avant de réaliser un s 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 SDL: La commande printf(""); n'affche rien! [ par yugiohjcj ] Bonjour,voici la source de mon programme:#include #include #include #define true 1int main(int argc, char *argv[]){ printf("\a"); if ( SDL_Init Commande System en background [ par thierryga ] Bonjour,Je développe une interface MFC et souhaite lancer desexécutables en tâche de fond par l'intermédiaire de lafonction "system". Or à chaque appe envoyer une commande à l'intérieure du programme sous forme de string [ par oudkaramla ] bonjour tout le monde j'ai un programme qui demande à l'utilisateur d'entrer une commande sur la fenêtre consolesauf que moi je veux le faire à l'inté Problème - system() [ par Tub 95 ] Bonjour à tous,Je voudrais effectuer un petit programme en C qui me présente un menu enfin de lancer à partir de ce menu des application !Pour ceci j'


Nos sponsors


Sondage...

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,842 sec (3)

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