• # fcntl

    Posté par (site web personnel) . En réponse au message Locker un fichier. Évalué à 1.

    La pose d'un verrou sur un fichier se fait à l'aide de la fonction système fcntl().

    Un exemple que j'ai là, sous la main :


    struct flock verrou;
    int fd;
    int no_err;

    /* création d'un verrou en lecture sur tout le fichier de données */
    verrou.l_type = F_RDLCK;
    verrou.l_start = 0;
    verrou.l_len = 0;
    verrou.l_whence = SEEK_SET;
    verrou.l_pid = getpid();

    /* ouverture du fichier de données */
    fd = open ("data.txt", O_RDONLY);

    /* pose du verrou */
    fcntl (fd, F_SETLKW, &verrou);

    /* affichage des données */
    lit_et_affiche_donnees (fd);

    /* deverouillage et fermeture */
    verrou.l_type = F_UNLCK;
    fcntl (fd, F_SETLKW, &verrou);
    close (fd);


    Réfère toi à la page man pour tous les détails et les options possibles (verrous en lecture/écriture, etc).