RE: Comportement mystérieux d'un programme C sur Debian 7

Top Page

Reply to this message
Author: BOITEUX, Frederic
Date:  
To: Jérémy Bobbio
CC: ML Guilde (guilde@guilde.asso.fr)
Subject: RE: Comportement mystérieux d'un programme C sur Debian 7
    Bonjour Jérémy,

Pour l'usage de rename(), ce serait judicieux, en effet, mais on a parfois gardé des habitudes héritées de systèmes Unix anciens :-)
En tout cas, le souci est avant, dans la création du fichier temporaire, pas dans son renommage… et cela n'arrive que de temps à autre…

[et pour l'espace dans le nom de fichier, il n'est pas dans le log original, j'ai dû l'introduire en copiant/collant :-(  ]

    Cordialement,
        Fred.

-----Message d'origine-----
De : Jérémy Bobbio [mailto:lunar@debian.org] 
Envoyé : vendredi 12 février 2016 14:46
À : ML Guilde (guilde@???)
Objet : Re: Comportement mystérieux d'un programme C sur Debian 7

BOITEUX, Frederic:

>  sur un serveur en Debian 7 (7.9), une application écrite en C/C++
> effectue [entre autres] toutes les 20 secondes une mise à jour d'un
> gros fichier (~ 30 Mo) en écrivant des données dans un fichier
> temporaire, avant de supprimer le fichier nominal pour le remplacer
> par ce fichier temporaire par des unlink() / link().


Je suis confus. Pourquoi ne pas utiliser rename(2)? J'ai justement le seul appel système qui garantie qu'on peut remplacer un fichier par une nouvelle version de manière atomique.

> On obtient des traces du genre :
>
> 15:13:04.349 =>ma_pub_sauve() : fwrite() done st=1, errno=4
> 15:13:04.360 =>ma_pub_sauve() : fclosed done status=0 errno=4
> 15:13:04.360 write file tmp file not found '/appli/ datas.d/mlp01/mlp01.tmp'

                                                     ^

Il est normal l'espace, là ?

(Si c'est un vrai répertoire que quelqu'un·e a nommé '\x20datas.d', je suggère d'expliquer à cette personne que ce genre de blagues ne fait rire personne.)

-- 
Lunar                                .''`. 
lunar@???                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-   
This message contains information that may be privileged or confidential and is the property of the Capgemini Group. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain, copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message.