Nouveau process : empêche la fermeture des fichiers ouverts ?

Nouveau process : empêche la fermeture des fichiers ouverts ? - Divers - Programmation

Marsh Posté le 08-02-2009 à 14:33:20    

Bonjour, j'ai un problème pour écrire un système de sauvegarde automatisé :
 
Pendant la sauvegarde, je dois fermer thunderbird (pour sauvegarder la base d'e-mails), et le relancer après. Pour le relancer, j'utilise la commande windows "start". Le problème c'est qu'à ce moment j'ai un fichier de log ouvert, et que thunderbird apparemment récupère un handle sur ce fichier (j'ai vérifié avec process explorer), du coup je ne peux plus écrire dans le fichier de log. Je soupçonne un problème d'héritage de handle de fichier lors de la création du nouveau process, mais je ne connais pas grand chose sur le sujet.
 
Pour les détails techniques, mon script de sauvegarde est en lua (j'utilise io.open pour ouvrir mon fichier, équivalent à fopen en C). Je ne lance pas directement thunderbird, j'utilise TBTray pour l'avoir dans en petite icone et non pas dans la barre des tâches, mais je pense que ça ne change rien. J'ai essayé l'option /I de la commande start, mais ça ne change rien. Et finalement j'ai fait le test suivant :
 
je lance l'interpréteur lua dans une fenêtre de commandes
je tape file = io.open( "c:/test.txt", "w" )
puis os.execute( "start \"Notepad\" notepad" )
ça m'ouvre notepad (normal)
je tape file:close()
je ferme la fenêtre de commandes (notepad reste ouvert, c'est pour ça que j'utilise la commande start)
je lance process explorer et je fais une recherche sur "test.txt" : il me dit que notepad possède un handle sur ce fichier.
 
Comment éviter ça ? Utiliser une autre commande que "start" ?


Message édité par youen le 10-02-2009 à 21:27:04
Reply

Marsh Posté le 08-02-2009 à 14:33:20   

Reply

Marsh Posté le 08-02-2009 à 21:52:11    

Personne n'a déjà rencontré ce problème ?

Reply

Marsh Posté le 10-02-2009 à 21:26:34    

Bon, ben tant pis, je laisse tomber, je le relancerais à la main après chaque sauvegarde, mais quand même j'aurais été curieux de comprendre le problème...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed