• [^] # Re: Mensonge !

    Posté par . En réponse à la dépêche Fabrice Bellard bat le record des décimales de Pi. Évalué à 3.

    tu as raison (et merci pour tes explications bien détaillées), mais le head peut quand même envoyer un SIGPIPE lorsqu'il est satisfait :



    $ sopranocmd --dbus org.kde.NepomukStorage --model main list "" "" "" | tr -s '\n' 'SL' > big.txt
    $ sopranocmd --dbus org.kde.NepomukStorage --model main list "" "" "" > big2.txt
    $ time -p cat big.txt | cut -c -4 -
    real 7.17
    user 0.00
    sys 0.05

    $ time -p cat big.txt | cut -c -4 - | head -1
    real 7.22
    user 0.00
    sys 0.06


    Par contre, avec le big2.txt (qui contient plusieurs lignes) :

    $ time -p cat big2.txt | cut -c -4 - | head -1
    <htt
    Command terminated by signal 13
    real 0.04
    user 0.00
    sys 0.00


    le head bufferise les entrées, mais ça ne change rien :

    $ cat big2.txt | cut -c -4 - | strace -f -o strace-head.txt head -1
    $ cat strace-head.txt | grep "read(0"
    7133 read(0, "<htt\n<htt\n<htt\n<htt\n<htt\n<htt\n<h"..., 8192) = 4096


    Remplacer le 4 du cut par 8192 (et un plus) pour le big.txt ne change rien (t'as raison donc).

    On va arrêter là, dans la vraie vie, évidemment que je ne ferais pas ça! Mon idée d'origine était que le head enverrait un SIGPIPE dès qu'il était content.

    Il est pas content après une ligne ce con (et moi non plus)!