Comment conserver le système de sortie de la commande dans une variable?
Je suis de l'exécution d'une fonction system() qui me renvoie un nom de fichier. Maintenant, je ne veux pas afficher le résultat sur l'écran(c'est à dire le nom de fichier) ou d'un tuyau, d'un newfile. J'ai juste envie de le stocker dans une variable. est-ce possible? si oui, comment?
grâce
La commande qui ne vous exécutez dans
Voir à ce sujet : Exécuter une Commande Système et d'Obtenir une Sortie?
double possible de Comment puis-je exécuter un programme externe à partir de C et d'analyser sa sortie?
system()
?Voir à ce sujet : Exécuter une Commande Système et d'Obtenir une Sortie?
double possible de Comment puis-je exécuter un programme externe à partir de C et d'analyser sa sortie?
OriginalL'auteur IITian | 2011-05-07
Vous devez vous connecter pour publier un commentaire.
Un seul nom de fichier? Oui. C'est certainement possible, mais de ne pas utiliser
system()
.Utilisation
popen()
. Cette option est disponible dans c et c++, que vous ayez ajouté à votre question avec les deux, mais sont probablement de code dans l'un ou l'autre.Voici un exemple dans C:
printf
appel, depuisfread()
n'est pas null mettre fin à la chaîne stockée dansline
.Merci, @MarkLakata. J'ai corrigé cela.
Afin de fread paramètres sont mauvais. 2e et 3e paramètres sont inversés. Il l'habitude de fonctionner correctement.
Merci pour mettre en évidence que ce ne serait pas travailler avec la sortie, en vertu de 256 caractères. Fixe.
OriginalL'auteur Johnsyweb
Vous pouvez utiliser
popen(3)
et lire à partir de ce fichier.Donc, fondamentalement, vous exécutez votre
command
puis de les lire à partir de laFILE
retourné. popen(3) fonctionne comme système (appelle le shell) de sorte que vous devriez être en mesure d'exécuter quelque chose avec elle.OriginalL'auteur cnicutar
Voici mon implémentation C++, qui redirige
system()
stdout vers un système de journalisation. Il utilise GNU libc estgetline()
. Il va lever une exception si il ne peut pas exécuter la commande, mais pas de les jeter si la commande s'exécute avec un état différent de zéro.OriginalL'auteur Mark Lakata
Bien,Il ya un moyen plus facile par lequel vous pouvez stocker la sortie de la commande dans un fichier qui est appelé méthode de redirection. Je pense que la redirection est assez facile et Il sera utile dans votre cas.
ainsi, Par Exemple, c'est mon code en c++
Ici la redirection de signer facilement rediriger toutes les sortie de cette commande dans un.fichier texte.
OriginalL'auteur Nitin Khanna