Connaître le résultat retournée par la commande system
pcmanprogrammeur
Messages postés126Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention16 octobre 2010
-
18 mars 2006 à 17:46
pcmanprogrammeur
Messages postés126Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention16 octobre 2010
-
19 mars 2006 à 22:57
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?
A voir également:
Connaître le résultat retournée par la commande system
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 18 mars 2006 à 17:55
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 !
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 19 mars 2006 à 13:47
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 :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Kate, the KDE Advanced Text Editor">
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é
pcmanprogrammeur
Messages postés126Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention16 octobre 2010 19 mars 2006 à 21:30
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012 19 mars 2006 à 21:40
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 !
pcmanprogrammeur
Messages postés126Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention16 octobre 2010 19 mars 2006 à 22:57
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.