[C] Vider un fifo

Entre chaques fois où le programme lis le contenu du fifo, il semble qu’il n’est pas vidé, puisqu’à chaque fois que je fais un

Ce qui était dedans avant n’est pas totalement effacé.

Comment vider un fifo?

Le code :


    #define FIFO "/home/xavier/mon_fifo"

    int ret = 0;
    ret = mkfifo(FIFO, ACCESSPERMS);
    if (ret == -1) perror("fifo creation")
    char buf[BUFSIZ];
    buf[0] = '\0';

    int f = open(FIFO, O_NONBLOCK);
    if (f == -1){
        perror("fifo opening");
        return smprintf("%s","");
    }

    if (read(f, buf, sizeof(buf) ) == -1){
        perror("fifo read");
        return smprintf("%s","");
    }
    close(f);
    buf[strlen(buf)-1] = '\0';
    printf("%s",buf);