Frodoz Posté(e) le 15 janvier 2006 Partager Posté(e) le 15 janvier 2006 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... Merci d'avance en tout les cas @bientot Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 16 janvier 2006 Partager Posté(e) le 16 janvier 2006 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 More sharing options...
SyGEN Posté(e) le 16 janvier 2006 Partager Posté(e) le 16 janvier 2006 Ne connaissant pas ton code, les 2 premieres questions seraient déja : 1* Est-ce que tu accèdes au fichier via plusieurs threads ? 2* Est-ce que tu fais bien tes fclose ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
niemand Posté(e) le 20 janvier 2006 Partager Posté(e) le 20 janvier 2006 Salut, ca fait un moment que j'ai pas fait de dev sous Solaris, mais si mes souvenirs sont bons, fopen met une errno avec un pointeur null, tu peux envoyer l'erreur en stdout avec perror. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.