• [^] # Re: ton collègue à raison !

    Posté par (site web personnel, Mastodon) . En réponse au message Accès concurrents, deception windowsienne. Évalué à 2.

    je m'explique :

    soit le code C suivant :



    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <stdlib.h>

    int main(int argc, char**argv) {

    if (argc != 4) {
    printf("Usage: %s file sleep count \n", argv[0]);
    exit(0);
    }

    int i;
    int n = atoi(argv[3]);
    int s = atoi(argv[2]);

    FILE *fp;

    fp = fopen(argv[1], "a");

    if (!fp) {
    printf("Erreur: file '%s'\n", argv[1]);
    exit(0);
    }

    for(i=0; i<n; ++i) {
    fprintf(fp, "je suis le process %d et je fais mon %d ème tour de boucle\n", getpid(), i);
    fflush(fp);
    sleep(s);
    }

    fclose(fp);

    return 0;
    }

    compilation :
    gcc -Wall test.c -o test
    ./test log 1 100 & ./test log 3 50 &
    Execution :

    je suis le process 12184 et je fais mon 0 ème tour de boucle
    je suis le process 12185 et je fais mon 0 ème tour de boucle
    je suis le process 12184 et je fais mon 1 ème tour de boucle
    je suis le process 12184 et je fais mon 2 ème tour de boucle
    je suis le process 12185 et je fais mon 1 ème tour de boucle
    je suis le process 12184 et je fais mon 3 ème tour de boucle
    je suis le process 12184 et je fais mon 4 ème tour de boucle
    je suis le process 12184 et je fais mon 5 ème tour de boucle
    je suis le process 12185 et je fais mon 2 ème tour de boucle
    je suis le process 12184 et je fais mon 6 ème tour de boucle
    je suis le process 12184 et je fais mon 7 ème tour de boucle
    je suis le process 12184 et je fais mon 8 ème tour de boucle
    je suis le process 12185 et je fais mon 3 ème tour de boucle
    je suis le process 12184 et je fais mon 9 ème tour de boucle
    je suis le process 12184 et je fais mon 10 ème tour de boucle
    je suis le process 12184 et je fais mon 11 ème tour de boucle
    je suis le process 12185 et je fais mon 4 ème tour de boucle
    ....
    ....


    CQFD!

    si tu veux des infos sur comment mettre des verrous sur les fichiers en php, regarde du coté de flock : http://www.nexen.net/docs/php/annotee/function.flock.php(...)

    M.