Aller au contenu

Read/Write de fichiers temporaires sous Solaris


Frodoz

Messages recommandés

Bonsoir a tou(te)s, j'ai un pb épineux a vous soumettre :)

je bosse sous solaris en ce moment, du developpement en C. Mon soft gere des ecritures/lectures ds des fichiers, et j'ai une erreur que je n'arrive pas a expliquer :

durant la generation d'un fichier, j'utilise un autre fichier que l'on pourra appeler buffer, que je crée en dur avec un petit fopen(file*..., "buffer.txt", "rb") classique.

Dans ce fichier je gere pas mal d'acces en lecture ecriture, et c'est un fichier qui est créé, rempli, effacé plusieurs fois durant l'execution du soft. Le probleme c'est qu'au bout d'un certain nombre de fois ou le fichier a ete créé/effacé (40-45 fois), le fichier est effacé pr de bon et un fopen retourne systematiquement NULL (meme en changeant le mode d'ouverture en r+b ou autre).

Donc ma question est la suivante : etant donné que je suis de plus en plus sur que le probleme ne vient pas de mon soft (il reste un doute forcement mais j'essaie de savoir d'ou cela pourrait venir autrement), je me posais la question de savoir si avec solaris ou unix plus generalement il y avait une limitation sur la lecture/ecriture dans un dossier?

genre si l'os s'apercoit que ds un dossier un fichier est créé, effacé recréé rapidmeent, une multitude de fois il n'est pas capable de bloquer le processus au bout d'un moment?

Voila j'espere avoir ete aussi clair que possible, j'espere que des avis eclairés se manifesteront... :D

Merci d'avance en tout les cas

@bientot

Lien vers le commentaire
Partager sur d’autres sites

Si tu fais des écritures/lectures dessus, ouvre le une fois pour toute en mode w+, et utilise fseek ?

Ton système peut ne pas apprécier le fait qu'un fichier soit crée/détruit tout simplement. Peut être que c'est un problème de sécurité de celui-ci ? (j'ai pas Solaris, et sous Win...)

Ah, et je suis con aussi, mais tu as peut être fait pire : quand tu démarre un programme, tu as un tableau de fichier (qui par défaut contient 0 = stdout, 1 = stdin, 2 = stderr, (peut être une inversion à faire pour stdin/out)) qui indique tous les pointeurs de fichiers ouverts.

Si tu ne fais que créer des fichiers, tu remplis ce tableau si bien que fopen() ne peut plus rien créer.

C'est une possibilité (mais je crois que le dit tableau est grand, genre 1024 )

En espérant t'avoir aidé.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...