Boinjour,
Le 11/04/2025 à 18:01, Edgar Bonet a écrit :
> Patrick Dupré a écrit :
>> J'ai un programme qui dure des heures ou jours.
>> Je voudrais avoir quelques info en faisant un fprintf
>> Mais tant que le fichier n'est pas ferme, il n'y a aucune
>> des infos que j'ai pu y ecrire qui soit accessible.
>> Je ne veux pas utiliser la stdout car il tourne en tache fond
>> sans interaction.
>
> Tu peux très bien envoyer ces infos sur stdout et :
>
> • sur un petit run (genre mini-problème de test) laisser tout ça
> s'afficher sur le terminal ;
>
> • sur un gros run qui prend des heures :
>
> – rediriger la sortie standard sur un fichier ;
>
> – ou bien laisser le terminal ouvert (genre tmux, que tu détaches
> et re-attaches à loisir).
>
>> Finalement, il semble que fflush fasse ce qu'il faut.
>
> Le problème avec fflush(), c'est que tu dois l'appeler après chaque
> printf(), ce qui risque d'être un peu lourd. Je te conseille plutôt de
> faire setlinebuf(stdout) (ou setlinebuf(my_log_file)) au début du
> programme.
Pour info, le fflush et setlinebuf vont forcer l'écriture sur le
système de fichiers. Certes, il est fait pour cela, mais c'est un stress
supplémentaire pour lui, surtout si ils sont appelés souvent.
Cordialement,
Olivier
--
~~~~~~~ _____/\_____ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix / _ \/ _ \ Olivier Allard-Jacquin
/ / \ / \ \ Web: http://olivieraj.free.fr/
/___/ / \ \___\ Mail: olivieraj@???
~~~~ ///// ///\\\ \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!