mon application cree plusieurs fichiers (beaucoup) rapidement, et les
efface ensuite tres rapidement egalement (dans une boucle en fait) avec
remove(name);
Mais remove echoue de temps en temps, aleatoirement. L erreur reportee
par errno est 89, MacOS Error, pas tres descriptif.
En investigant plus loin, il semblerait que Spotlight soit, tout du
moins en partie, en cause. Lorsque je desactive l indexation ou que je
specifie le repertoire pour ne pas etre indexe, l application se deroule
bien mieux (du moins pas eu de probleme jusqu a present). Il semblerait
que certains utilisateurs aient le meme probleme avec un anti virus.
Est ce que qqn a des pistes, conseils ou autre sur ce genre de probleme ?
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
Eric Levenez
Le 18/04/06 17:17, dans <44450320$0$20430$, « DLPnet » a écrit :
mon application cree plusieurs fichiers (beaucoup) rapidement, et les efface ensuite tres rapidement egalement (dans une boucle en fait) avec remove(name);
Mais remove echoue de temps en temps, aleatoirement. L erreur reportee par errno est 89, MacOS Error, pas tres descriptif.
En investigant plus loin, il semblerait que Spotlight soit, tout du moins en partie, en cause. Lorsque je desactive l indexation ou que je specifie le repertoire pour ne pas etre indexe, l application se deroule bien mieux (du moins pas eu de probleme jusqu a present).
Oui, j'ai déjà vu cela. Dès que le fichier est créé, spotlight se déclanche et va le lire, ce qui peut entraîner des problèmes si on veut effacer ou renommer le fichier. Effectivement si le fichier est créé dans un répertoire où ne vas pas Spotlight, il n'y a plus de problème. Si tu crées beaucoup de fichiers temporaires, alors il faut les mettre sous /tmp et là il n'y aura pas de problème. Tu peux aussi créer (creat) puis supprimer (remove) un fichier et continuer à l'utiliser (par son fd), c'est au close (où à celui de spotlight) qu'il sera supprimer. Cela pourrait berner spotlight.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 18/04/06 17:17, dans <44450320$0$20430$636a55ce@news.free.fr>, « DLPnet »
<dlpnet-@-free.fr> a écrit :
mon application cree plusieurs fichiers (beaucoup) rapidement, et les
efface ensuite tres rapidement egalement (dans une boucle en fait) avec
remove(name);
Mais remove echoue de temps en temps, aleatoirement. L erreur reportee
par errno est 89, MacOS Error, pas tres descriptif.
En investigant plus loin, il semblerait que Spotlight soit, tout du
moins en partie, en cause. Lorsque je desactive l indexation ou que je
specifie le repertoire pour ne pas etre indexe, l application se deroule
bien mieux (du moins pas eu de probleme jusqu a present).
Oui, j'ai déjà vu cela. Dès que le fichier est créé, spotlight se déclanche
et va le lire, ce qui peut entraîner des problèmes si on veut effacer ou
renommer le fichier. Effectivement si le fichier est créé dans un répertoire
où ne vas pas Spotlight, il n'y a plus de problème. Si tu crées beaucoup de
fichiers temporaires, alors il faut les mettre sous /tmp et là il n'y aura
pas de problème. Tu peux aussi créer (creat) puis supprimer (remove) un
fichier et continuer à l'utiliser (par son fd), c'est au close (où à celui
de spotlight) qu'il sera supprimer. Cela pourrait berner spotlight.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 18/04/06 17:17, dans <44450320$0$20430$, « DLPnet » a écrit :
mon application cree plusieurs fichiers (beaucoup) rapidement, et les efface ensuite tres rapidement egalement (dans une boucle en fait) avec remove(name);
Mais remove echoue de temps en temps, aleatoirement. L erreur reportee par errno est 89, MacOS Error, pas tres descriptif.
En investigant plus loin, il semblerait que Spotlight soit, tout du moins en partie, en cause. Lorsque je desactive l indexation ou que je specifie le repertoire pour ne pas etre indexe, l application se deroule bien mieux (du moins pas eu de probleme jusqu a present).
Oui, j'ai déjà vu cela. Dès que le fichier est créé, spotlight se déclanche et va le lire, ce qui peut entraîner des problèmes si on veut effacer ou renommer le fichier. Effectivement si le fichier est créé dans un répertoire où ne vas pas Spotlight, il n'y a plus de problème. Si tu crées beaucoup de fichiers temporaires, alors il faut les mettre sous /tmp et là il n'y aura pas de problème. Tu peux aussi créer (creat) puis supprimer (remove) un fichier et continuer à l'utiliser (par son fd), c'est au close (où à celui de spotlight) qu'il sera supprimer. Cela pourrait berner spotlight.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
DLPnet
Merci pour ta reponse !
Oui, j'ai déjà vu cela. Dès que le fichier est créé, spotlight se déclanche et va le lire, ce qui peut entraîner des problèmes si on veut effacer ou renommer le fichier. Effectivement si le fichier est créé dans un répertoire où ne vas pas Spotlight, il n'y a plus de problème. Si tu crées beaucoup de fichiers temporaires, alors il faut les mettre sous /tmp et là il n'y aura
le /tmp n est pas forcement une solution car l utilisateur peut choisir l emplacement de ses fichiers temporaires.
pas de problème. Tu peux aussi créer (creat) puis supprimer (remove) un fichier et continuer à l'utiliser (par son fd), c'est au close (où à celui de spotlight) qu'il sera supprimer. Cela pourrait berner spotlight.
En fait je cree plusieurs patch d une image. Ensuite uniquement je reouvre ces fichiers en lecture et ensuite je les efface. Je ne suis pas sur qu une telle manip sur la deuxieme partie pourra me garantir l effacement.
N y aurait il pas un moyen ou une fonction pour savoir si un fichier est ouvert par un autre process ? Car je pourrais attendre de pouvoir l effacer. Et que veut dire cette erreur 89 ? Un peu generique ce MacOS Error ...
Merci !
Dlp
Merci pour ta reponse !
Oui, j'ai déjà vu cela. Dès que le fichier est créé, spotlight se déclanche
et va le lire, ce qui peut entraîner des problèmes si on veut effacer ou
renommer le fichier. Effectivement si le fichier est créé dans un répertoire
où ne vas pas Spotlight, il n'y a plus de problème. Si tu crées beaucoup de
fichiers temporaires, alors il faut les mettre sous /tmp et là il n'y aura
le /tmp n est pas forcement une solution car l utilisateur peut choisir
l emplacement de ses fichiers temporaires.
pas de problème. Tu peux aussi créer (creat) puis supprimer (remove) un
fichier et continuer à l'utiliser (par son fd), c'est au close (où à celui
de spotlight) qu'il sera supprimer. Cela pourrait berner spotlight.
En fait je cree plusieurs patch d une image. Ensuite uniquement je
reouvre ces fichiers en lecture et ensuite je les efface. Je ne suis pas
sur qu une telle manip sur la deuxieme partie pourra me garantir l
effacement.
N y aurait il pas un moyen ou une fonction pour savoir si un fichier est
ouvert par un autre process ? Car je pourrais attendre de pouvoir l
effacer. Et que veut dire cette erreur 89 ? Un peu generique ce MacOS
Error ...
Oui, j'ai déjà vu cela. Dès que le fichier est créé, spotlight se déclanche et va le lire, ce qui peut entraîner des problèmes si on veut effacer ou renommer le fichier. Effectivement si le fichier est créé dans un répertoire où ne vas pas Spotlight, il n'y a plus de problème. Si tu crées beaucoup de fichiers temporaires, alors il faut les mettre sous /tmp et là il n'y aura
le /tmp n est pas forcement une solution car l utilisateur peut choisir l emplacement de ses fichiers temporaires.
pas de problème. Tu peux aussi créer (creat) puis supprimer (remove) un fichier et continuer à l'utiliser (par son fd), c'est au close (où à celui de spotlight) qu'il sera supprimer. Cela pourrait berner spotlight.
En fait je cree plusieurs patch d une image. Ensuite uniquement je reouvre ces fichiers en lecture et ensuite je les efface. Je ne suis pas sur qu une telle manip sur la deuxieme partie pourra me garantir l effacement.
N y aurait il pas un moyen ou une fonction pour savoir si un fichier est ouvert par un autre process ? Car je pourrais attendre de pouvoir l effacer. Et que veut dire cette erreur 89 ? Un peu generique ce MacOS Error ...
Merci !
Dlp
Eric Levenez
Le 19/04/06 15:39, dans <44463d91$0$20855$, « DLPnet » a écrit :
N y aurait il pas un moyen ou une fonction pour savoir si un fichier est ouvert par un autre process ?
Si il y avait une telle fonction, son résultat ne serait pas sûr car entre la lecture du compteur d'ouverture, le retour de l'appel système et son test dans le programme utilisateur, ce compteur pourrait être modifié 10 fois.
Car je pourrais attendre de pouvoir l effacer. Et que veut dire cette erreur 89 ?
La liste est dans errno.h et cela donne :
#define ECANCELED 89 /* Operation canceled */
Tu peux toujours tester ce code d'erreur (normalement retourné par aio_cancel), et essayer (plus tard?) l'effacement du fichier.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 19/04/06 15:39, dans <44463d91$0$20855$636a55ce@news.free.fr>, « DLPnet »
<dlpnet-@-free.fr> a écrit :
N y aurait il pas un moyen ou une fonction pour savoir si un fichier est
ouvert par un autre process ?
Si il y avait une telle fonction, son résultat ne serait pas sûr car entre
la lecture du compteur d'ouverture, le retour de l'appel système et son test
dans le programme utilisateur, ce compteur pourrait être modifié 10 fois.
Car je pourrais attendre de pouvoir l
effacer. Et que veut dire cette erreur 89 ?
La liste est dans errno.h et cela donne :
#define ECANCELED 89 /* Operation canceled */
Tu peux toujours tester ce code d'erreur (normalement retourné par
aio_cancel), et essayer (plus tard?) l'effacement du fichier.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 19/04/06 15:39, dans <44463d91$0$20855$, « DLPnet » a écrit :
N y aurait il pas un moyen ou une fonction pour savoir si un fichier est ouvert par un autre process ?
Si il y avait une telle fonction, son résultat ne serait pas sûr car entre la lecture du compteur d'ouverture, le retour de l'appel système et son test dans le programme utilisateur, ce compteur pourrait être modifié 10 fois.
Car je pourrais attendre de pouvoir l effacer. Et que veut dire cette erreur 89 ?
La liste est dans errno.h et cela donne :
#define ECANCELED 89 /* Operation canceled */
Tu peux toujours tester ce code d'erreur (normalement retourné par aio_cancel), et essayer (plus tard?) l'effacement du fichier.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.