C'est peut-être une lenteur dans la résolution de noms (noms utilisés dans les infos supplémentaires affichées pour l'option -l : propriétaire, groupe, ...).
Merci beaucoup à vous deux, vos réponses m'ont vraiment dépanné.
J'ai réussi à faire fonctionner mon programme mais il y a quelque chose qui m'étonne un peu : quand je fais le realloc, je prend uniquement strlen(vc_str) + 1 et pourtant ça ne plante pas.
J'avais pourtant lu qu'il fallait toujours réserver un caractère en fin de chaine pour le caractere null (qui indique la fin de la chaine).
Le nouveau code source:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main (void)
{
FILE *output;
char vc_car;
char *vc_tmp = NULL;
char *vc_str = NULL;
// Execution de la commande OS
output = popen ("echo sortie_commande", "r");
if (!output) {
fprintf (stderr, "incorrect parameters or too many files.\n");
return EXIT_FAILURE;
}
vc_tmp = (char *) malloc (sizeof(vc_car));
vc_car = getc(output);
while (vc_car != EOF) {
if (vc_str == NULL) {
// premiere allocation de memoire pour vc_str
vc_str = (char *) malloc (sizeof(vc_car));
if (vc_str == NULL) {
printf("Cannot allocate memory.\n");
}
}
else {
// on augmente la taille de vc_str au fur et a mesure des caracteres lus
vc_str = realloc (vc_str, strlen(vc_str) + 1);
if (vc_str == NULL) {
printf("Cannot allocate memory.\n");
}
}
*vc_tmp = vc_car;
vc_str = strncat(vc_str, vc_tmp, 1);
// Affichage
fprintf (stdout, "vc_car : %c\n", vc_car);
fprintf (stdout, "vc_str : x%sx\n", vc_str);
fprintf (stdout, "--------------\n");
vc_car = getc(output);
}
if (pclose (output) != 0)
{
fprintf (stderr, "Could not run more or other error.\n");
}
return EXIT_SUCCESS;
}
Il y aussi "rsnapshot" qui est un script perl basé sur rsync.
Il permet :
- de sauvegarder des fichiers distants
- de garder les versions precedentes des fichiers modifiés en n'utilisant de l'espace disque que pour les fichiers réellement modifiés (utilisation de liens "durs")
Juste un détail : rsnapshot doit tourner sur la machine qui stocke les sauvegardes.
Pour l'installer sur debian:
apt-get install rsnapshot
La configuration se fait ensuite par le fichier /etc/rsnapshot.conf
[^] # Re: ls -all partout ?
Posté par startijenn . En réponse au message probleme sur montage nfs. Évalué à 2.
Est-ce que le ls -ln donne de meilleur résultat?
# merci...
Posté par startijenn . En réponse au message concatenation de chaine. Évalué à 1.
[^] # Re: quels logiciels doivent être installés? Où et comment?
Posté par startijenn . En réponse au message système de sauvegarde automatique de données. Évalué à 1.
Il permet :
- de sauvegarder des fichiers distants
- de garder les versions precedentes des fichiers modifiés en n'utilisant de l'espace disque que pour les fichiers réellement modifiés (utilisation de liens "durs")
Juste un détail : rsnapshot doit tourner sur la machine qui stocke les sauvegardes.
Pour l'installer sur debian:
apt-get install rsnapshot
La configuration se fait ensuite par le fichier /etc/rsnapshot.conf
Un petit HOWTO:
http://www.rsnapshot.org/howto/1.1/rsnapshot-HOWTO.fr.html