AL.001
Messages postés7Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 6 février 2009
-
4 févr. 2009 à 16:32
AL.001
Messages postés7Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 6 février 2009
-
6 févr. 2009 à 13:53
Bonjour,
Je cherche une fonction qui prend en entrée un chemin, un nom de fichier, et qui me retourne le chemin complet du fichier.
Et le tout sous UNIX...
Ex: J'ai le répertoire /DEV/DATA/trflog qui contient 31 répertoires. Chacun de ces répertoires contient 24 répertoires, qui contiennent des fichiers de LOG tournants.
Mon programme doit chercher le fichier "logXXX.txt" dans /DEV/DATA/trflog.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 févr. 2009 à 02:08
Si par unix tu entends linux, scandir pour lister les fichiers d'un répertoire.
Sinon, peut-être cette fonction existe t-elle sous unix
Sinon, je sais pas.
AL.001
Messages postés7Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 6 février 2009 5 févr. 2009 à 09:30
Je travail sur un deamon de log sur une plateforme SUN, sous UNIX.
Je cherche une fonction qui à partir d'un répertoire et d'un nom de fichier puisse me retourner le chemin du fichier en entrée...
while ((lecture = readdir(rep)))
{
if(!strcmp(lecture->d_name,".") || !strcmp(lecture->d_name,"..")) continue;
sprintf(ssdossier,"%s/%s",Path,lecture->d_name);
if (opendir(ssdossier) != NULL)
findFile(fileName, ssdossier, fullName);
if (!strcmp(fileName, lecture->d_name))
{
flog("SED0052I", "\n\n FICHIER TROUVE !!!!!!: %s\n\n",ssdossier);
sprintf(fullName, "%s/%s", Path, lecture->d_name);
break;
}
}
closedir(rep);
}
fileName = le nom du fichier que je cherche.
Path = le répertoire à partir duquel je fais la recherche
fullName = contiendra le chemin complet du fichier.
Pour l'instant cette fonction se vautre au bout du 238 répertoire lu...
Avec en message d'erreur "cannot open!".
Vous n’avez pas trouvé la réponse que vous recherchez ?
AL.001
Messages postés7Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 6 février 2009 5 févr. 2009 à 10:43
Je travail sur un deamon de log sur une plateforme SUN, sous UNIX.
Je
cherche une fonction qui à partir d'un répertoire et d'un nom de
fichier puisse me retourner le chemin du fichier en entrée...
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 févr. 2009 à 16:11
Y'a t-il un champ d_type dans lecture ?
Si oui, tu devrais être capable de tester ce champ plutôt que d'essayer d'ouvrir un répertoire avec un opendir.
Essais en remplaçant ceci:
if (opendir(ssdossier) != NULL)
findFile(fileName, ssdossier, fullName);
par ceci:
if (lecture->d_type == DT_DIR)
findFile(fileName, ssdossier, fullName);
AL.001
Messages postés7Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 6 février 2009 5 févr. 2009 à 16:42
Merci, mais malheureusement pas de d_type dans ma structure dirent ...
J'ai allégé la fonction pour ne lister que les répertoires recursivement, mais j'ai tjs le même plantage:
Quand pensez-vous ? Ce n'est pas trop gourmand ou risqué ?
Pour l'instant ça ne ma pas sauté en pleine face...
Je vais tenter d'intégrer une condition pour sortir une fois le nom du fichier trouvé !