Sujet : Re: Extension au protocole NNTP
De : iulius (at) *nospam* nom-de-mon-site.com.invalid (Julien ÉLIE)
Groupes : fr.comp.usenet.serveursDate : 19. Mar 2022, 07:29:39
Autres entêtes
Organisation : Groupes francophones par TrigoFACILE
Message-ID : <t13t8j$gl4q$1@news.trigofacile.com>
References : 1 2 3 4 5 6 7 8 9
User-Agent : Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.7.0
Bonjour Marc et tth,
tu pourrais faire un "sed -i"
ajoutant l'en-tête juste après la fin des en-têtes (ou à un autre lieu).
>
Dans ce cas il y a un risque que celui qui a déjà ouvert le fichier
voie des choses bizarres se produire. C'est peu probable, mais c'est
possible.
>
sed < 42 > 42.NEW
>
# posix-atomic
mv -f 42.NEW 42
Je confirme d'expérience : c'est LA façon de bien faire.
Heu... je ne parlais pas de "sed < 42 > 42.NEW" mais de "sed -i" ("--in-place).
Je viens de regarder le code source de GNU sed lorsqu'il fait une édition "--in-place". Il réalise toutes les opérations dans un fichier temporaire puis :
ck_rename (input->out_file_name, target_name, input->out_file_name);
void
ck_rename (const char *from, const char *to, const char *unlink_if_fail)
{
int rd = rename(from, to);
if (rd != -1)
return;
[...]
}
GNU sed utilise bien rename(2) qui est une opération atomique.
"mv" n'est pas LA façon de bien faire... Il existe de multiples autres façons...
-- Julien ÉLIE« Pour aller plus vite, j'additionne toujours de bas en haut : je fais du même coup l'addition et la preuve. » (Aurélien Scholl)