• # non-blocking I/O

    Posté par . En réponse au message Ecritures disques non bloquants. Évalué à 2.

    Tu mets ton FD non-blocking, et avant d'écrire tu appelles select() en le passant dans le writing set: si tu peux écrire, écris, sinon bufferise.
    Note que si le taux d'écriture de ton process est assez faible, tu peux utiliser un bête :
    $ ./monprog | cat > log
    cat va aussi bloquer sur certains write(), mais tant que le pipe n'est pas plein, ton process ne bloquera pas.
    Il faut donc grosso modo que :
    taux d'écriture < taille PIPE / blocage max de write
    (valeurs typiques: taille PIPE = 64KB, blocage max de write ~ 1s avec un BUFSIZ de l'ordre de 8192)