je suis sur Tiger (mais j ai le meme probleme avec les autres versions
de l OS) et j utilise la fonction 'remove' en C.
Je manipule un bon nombre de fichier, j ouvre, je ferme, j efface, ...
rapidement. Et dans certains cas le remove me renvoie une erreur 89 et n
efface pas le fichier du tout. Ce fichier fait partie d une liste de
plusieurs fichiers, et est efface comme tous les autres dans une boucle.
Ce n est jamais le meme fichier qui provoque cette erreur et ce n est
pas systematique.
Tous les fichiers sont bien ouverts et bien refermes avant le remove
donc je ne comprends pas le probleme.
Auriez vous une idee ou une piste ou quoique se soit ? :)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Schmurtz
DLPnet wrote:
je suis sur Tiger (mais j ai le meme probleme avec les autres versions de l OS) et j utilise la fonction 'remove' en C. Je manipule un bon nombre de fichier, j ouvre, je ferme, j efface, ... rapidement. Et dans certains cas le remove me renvoie une erreur 89 et n efface pas le fichier du tout. Ce fichier fait partie d une liste de plusieurs fichiers, et est efface comme tous les autres dans une boucle. Ce n est jamais le meme fichier qui provoque cette erreur et ce n est pas systematique.
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
-- Schmurtz
DLPnet <dlpnet-@-free.fr> wrote:
je suis sur Tiger (mais j ai le meme probleme avec les autres versions
de l OS) et j utilise la fonction 'remove' en C.
Je manipule un bon nombre de fichier, j ouvre, je ferme, j efface, ...
rapidement. Et dans certains cas le remove me renvoie une erreur 89 et n
efface pas le fichier du tout. Ce fichier fait partie d une liste de
plusieurs fichiers, et est efface comme tous les autres dans une boucle.
Ce n est jamais le meme fichier qui provoque cette erreur et ce n est
pas systematique.
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec
la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
je suis sur Tiger (mais j ai le meme probleme avec les autres versions de l OS) et j utilise la fonction 'remove' en C. Je manipule un bon nombre de fichier, j ouvre, je ferme, j efface, ... rapidement. Et dans certains cas le remove me renvoie une erreur 89 et n efface pas le fichier du tout. Ce fichier fait partie d une liste de plusieurs fichiers, et est efface comme tous les autres dans une boucle. Ce n est jamais le meme fichier qui provoque cette erreur et ce n est pas systematique.
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
-- Schmurtz
Eric Lévénez
Le 12/07/05 16:41, dans <42d3d6ad$0$10756$, « Schmurtz » a écrit :
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
Non, la fonction POSIX 1003.1 pour supprimer un fichier est remove, pas unlink. Il a existé un temps où cet appel système était disponible en tant que commande unix. C'était une commande très dangereuse car on pouvait par exemple supprimer un des 2 liens d'un répertoire le rendant inutilisable. C'était plus une commande servant à corriger le nombre de lien d'un répertoire quand un fsck échouait. Avec l'arrivée des VFS, cet appel système a été inutilisable pour cela et la fonction C remove a été introduite pour ne pas se tromper de commande. L'appel système unlink est restée (mais bridée) pour un problème de compatibilité.
Pour en revenir à l'errno 89, il ne devrait arriver qu'avec des fonctions d'entrée/sortie asynchrones. Voir le "man aio_cancel". Alors peut-être que le programme qui utilise la fonction "remove" fait cet accès de façon asynchrone en parallèle ?
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 12/07/05 16:41, dans <42d3d6ad$0$10756$636a15ce@news.free.fr>,
« Schmurtz » <moi@ici.com> a écrit :
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec
la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
Non, la fonction POSIX 1003.1 pour supprimer un fichier est remove, pas
unlink. Il a existé un temps où cet appel système était disponible en tant
que commande unix. C'était une commande très dangereuse car on pouvait par
exemple supprimer un des 2 liens d'un répertoire le rendant inutilisable.
C'était plus une commande servant à corriger le nombre de lien d'un
répertoire quand un fsck échouait. Avec l'arrivée des VFS, cet appel système
a été inutilisable pour cela et la fonction C remove a été introduite pour
ne pas se tromper de commande. L'appel système unlink est restée (mais
bridée) pour un problème de compatibilité.
Pour en revenir à l'errno 89, il ne devrait arriver qu'avec des fonctions
d'entrée/sortie asynchrones. Voir le "man aio_cancel". Alors peut-être que
le programme qui utilise la fonction "remove" fait cet accès de façon
asynchrone en parallèle ?
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 12/07/05 16:41, dans <42d3d6ad$0$10756$, « Schmurtz » a écrit :
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
Non, la fonction POSIX 1003.1 pour supprimer un fichier est remove, pas unlink. Il a existé un temps où cet appel système était disponible en tant que commande unix. C'était une commande très dangereuse car on pouvait par exemple supprimer un des 2 liens d'un répertoire le rendant inutilisable. C'était plus une commande servant à corriger le nombre de lien d'un répertoire quand un fsck échouait. Avec l'arrivée des VFS, cet appel système a été inutilisable pour cela et la fonction C remove a été introduite pour ne pas se tromper de commande. L'appel système unlink est restée (mais bridée) pour un problème de compatibilité.
Pour en revenir à l'errno 89, il ne devrait arriver qu'avec des fonctions d'entrée/sortie asynchrones. Voir le "man aio_cancel". Alors peut-être que le programme qui utilise la fonction "remove" fait cet accès de façon asynchrone en parallèle ?
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Schmurtz
Eric Lévénez wrote:
« Schmurtz » a écrit :
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
Non, la fonction POSIX 1003.1 pour supprimer un fichier est remove, pas unlink. Il a existé un temps où cet appel système était disponible en tant que commande unix. C'était une commande très dangereuse car on pouvait par exemple supprimer un des 2 liens d'un répertoire le rendant inutilisable. C'était plus une commande servant à corriger le nombre de lien d'un répertoire quand un fsck échouait. Avec l'arrivée des VFS, cet appel système a été inutilisable pour cela et la fonction C remove a été introduite pour ne pas se tromper de commande. L'appel système unlink est restée (mais bridée) pour un problème de compatibilité.
Va falloir que je revise moi...
-- Schmurtz
Eric Lévénez <eric@levenez.com> wrote:
« Schmurtz » <moi@ici.com> a écrit :
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec
la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
Non, la fonction POSIX 1003.1 pour supprimer un fichier est remove, pas
unlink. Il a existé un temps où cet appel système était disponible en tant
que commande unix. C'était une commande très dangereuse car on pouvait par
exemple supprimer un des 2 liens d'un répertoire le rendant inutilisable.
C'était plus une commande servant à corriger le nombre de lien d'un
répertoire quand un fsck échouait. Avec l'arrivée des VFS, cet appel système
a été inutilisable pour cela et la fonction C remove a été introduite pour
ne pas se tromper de commande. L'appel système unlink est restée (mais
bridée) pour un problème de compatibilité.
Desole, je n'est jamais utilise cette fonction. Mais essai toujours avec la fonction unlink (fonction POSIX), qui permet de supprimer un fichier.
Non, la fonction POSIX 1003.1 pour supprimer un fichier est remove, pas unlink. Il a existé un temps où cet appel système était disponible en tant que commande unix. C'était une commande très dangereuse car on pouvait par exemple supprimer un des 2 liens d'un répertoire le rendant inutilisable. C'était plus une commande servant à corriger le nombre de lien d'un répertoire quand un fsck échouait. Avec l'arrivée des VFS, cet appel système a été inutilisable pour cela et la fonction C remove a été introduite pour ne pas se tromper de commande. L'appel système unlink est restée (mais bridée) pour un problème de compatibilité.