Je exécute une fonction système () qui me renvoie un nom de fichier. Maintenant, je ne veux pas afficher la sortie sur l'écran (ie le nom de fichier) ou le tuyau à un nouveaufile. Je veux juste le stocker dans une variable. est-ce possible? si c'est le cas, comment? merci p>
4 Réponses :
Vous pouvez utiliser popen (3) code> a > strong> et lire à partir de ce fichier.
FILE *popen(const char *command, const char *type);
Un seul nom de fichier? Oui. C'est certainement possible, mais n'utilisant pas Utilisez Voici un exemple en C: P> System () code>.
popen () code>
. Ceci est disponible dans C et C ++ , vous avez étiqueté votre question avec les deux mais sont Aller probablement à coder dans l'un ou l'autre. p> #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fpipe;
char *command = "ls";
char c = 0;
if (0 == (fpipe = (FILE*)popen(command, "r")))
{
perror("popen() failed.");
exit(EXIT_FAILURE);
}
while (fread(&c, sizeof c, 1, fpipe))
{
printf("%c", c);
}
pclose(fpipe);
return EXIT_SUCCESS;
}
Cela entraînera un comportement non défini à l'appel code> printf code>, puisque Fread () code> n'est pas null terminer la chaîne stockée dans
ligne code>.
Merci, @marklakata. J'ai réparé cela.
Les paramètres de l'ordre des fread sont faux. Les 2e et 3ème paramètres sont échangés. Il ne fonctionnera pas correctement.
@vicky: Merci d'avoir souligné que cela ne fonctionnerait pas avec la production de moins de 256 caractères. Fixé.
Pourquoi tu retournes -1 à la fin? -1 signifie que c'est échoué.
@AMIR 9 ans après avoir écrit cette réponse, je suis aussi perplexe que vous êtes. La fonction principale devrait renvoyer exit_success: Stackoverflow.com/a/8696712
Voici mon implémentation C ++, qui redirige système () code> stdout à un système de journalisation. Il utilise
getline (code> getline () code>. Il lancera une exception si elle ne peut pas exécuter la commande, mais ne jettera pas si la commande fonctionne avec statut non nul.
Eh bien, il y a un moyen de plus facile par lequel vous pouvez stocker la sortie de commande dans un fichier appelé méthode de redirection. Je pense que la redirection est assez facile et elle sera utile dans votre cas.
Donc, par exemple, c'est mon code dans C ++ strong> p> ici Le signe de redirection redirige facilement toutes les sorties de cette commande dans un fichier A.Text. P> p>
Quelle commande exécutez-vous dans
système () code>?
Voir ce sujet: Exécuter une commande système et obtenir la sortie?
duplicaté possible de Comment puis-je Exécuter un programme externe de C et analyser sa sortie?