Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèque standard C Discussion :

écriture circulaire sur un disque


Sujet :

Bibliothèque standard C

  1. #1
    Membre actif
    écriture circulaire sur un disque
    Bonjour,

    J'aimerais stocker des logs dans un disque dur, en utlisant la bibliothèque I/O offerte par C. Les anciens logs seront écrasés par les nouveaux logs qui arrivent s'il n'y a plus de place.
    J'écris les logs à intervalle régulier (toutes les 5mn). Je les nomme par leurs dates de création respectives. On doit pouvoir les lire à tout moment.

    Le problème est similaire à celui d'archivages de paquets par wireshark, en utilisant fopen, fclose, pcap_dump, etc...
    Dans le code de wireshark, on crée un nouveau fichier, on le remplit puis on le ferme, ainsi de suite. Je ne vois pas dans leur code à quel moment le plus ancien fichier est écrasé par le nouveau (buffer circulaire).

    Voici le bout de code de wireshark pour ceux qui sont intéressés (http://code.metager.de/source/xref/w...uf_open_file):. ws_open ici permet d'ouvir un nouveau fichier pour les nouveaux logs qui arrivent.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    123  rb_data.fd = ws_open(rfile->name, O_RDWR|O_BINARY|O_TRUNC|O_CREAT,
    124                            rb_data.group_read_access ? 0640 : 0600);


    Mes questions:
    1) Est ce que c'est bien le système qui s'occupe de l'écrasement
    2) si 1) est vrai alors est ce que les flags O_RDWR|O_BINARY|O_TRUNC|O_CREAT jouent un role essentiel dans l'écrasement ?

    Merci d'avance pour votre aide

  2. #2
    Responsable 2D/3D/Jeux

    Bonjour,

    Je ne vois pas en quoi c'est un tampon circulaire, mais plutôt : un fichier que l'on écrase à chaque nouvelle ouverture.
    Oui, c'est bien les options qui indiquent ce comportement, voir le man de open.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.