Tarhon-Onu Victor scria la data de 26 Decembrie 2005:
> On Fri, 23 Dec 2005, Liviu Daia wrote:
> 
> >> Ok, atunci pun si eu o intrebare. Inteleg ca faptul ca outputu se
> >> scoate in chunks de 4096 de bytes
> >
> >    Cum spuneam, 8192.
> 
>       Cum va lasa oamenii singuri cum debitati ineptii.

    Mult adevar ai grait.  Ba chiar te-ai grabit sa iti si exemplifici
butada. :-)

> E posibil sa depinda de la SO la SO, sau de la versiune la versiune
> (daca ai ceva pe 64bit e posibil sa ai alte dimensiuni pentru buffere
> - dar nu obligatoriu).

    Atunci ar trebui ca teoria ta sa fie adevarata si pe alte SO-uri,
ceea ce nu se intampla.  Sub OpenBSD:

        $ ulimit -p
        1

si cu toate astea fisierele sunt scrise in chunk-uri de cate 16 KB.

    In vederea pissing contest-ului care urmeaza, uite si cum am testat.

    Intr-o consola lansez:

        ./a >c

unde "a" este programul urmator:

        #include <stdio.h>
        #include <unistd.h>

        main ()
        {
          int i;

          while (1)
          {
            for (i = 0; i < 1024; i++)
              printf ("x");
            sleep (1);
          }
        }

    In alta consola, lansat cat mai repede (la mai putin de o secunda)
dupa celalalt:

        ./b

unde "b" este script-ul urmator:

        #! /bin/sh
        while true; do
          ls -l c
          sleep 1
        done


    Sub Linux asta produce:

$ uname -a
Linux euler.imar.ro 2.4.32-grsec #3 Wed Dec 21 19:38:53 EET 2005 i686 unknown 
unknown GNU/Linux

$ ulimit -p
8

$ ./b
-rw-r--r--  1 daia ancompl 0 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 0 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 0 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 0 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 4096 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 4096 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 4096 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 4096 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 8192 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 8192 Dec 26 19:59 c
-rw-r--r--  1 daia ancompl 8192 Dec 26 19:59 c


    Sub OpenBSD:

$ uname -a
OpenBSD ns1.imar.ro 3.7 GENERIC.MP#2 i386

$ echo $SHELL
/usr/local/bin/bash

$ echo $BASH_VERSION
3.00.16(1)-release

$ ulimit -p
1

$ ./b
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  0 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  16384 Dec 26 20:00 c
-rw-r--r--  1 daia  daia  16384 Dec 26 20:00 c


>       Cum va spuneam undeva pe la incpeutul threadului, man ulimit. Nu
> stiu altii cum sint, dar la mine:
> 
> ulimit -p
> 8
>       unde:
>           -p     The pipe size in 512-byte blocks (this may not be set)

    Pentru cultura mea generala, unde intervine pipe size cand faci o
redirectare "foo >bar"?

> >    Daca ai facut asta ochioscopic, o posibila explicatie ar putea fi
> > ca
>
>       ochioscopic!=practica sau realitate. Asta este motivul pentru
> care va certati nejustificat de la dimensiunea default a unor buffere,
> de la modul cum se comporta comanda 1>output sau comanda >output, etc.
> Pentru ca va dati cu presupusul sau trasniti lucruri din amintiri fara
> sa aveti nici o baza teoretica sau practica la afirmatiile voastre.
> Foarte defect domnilor, foarte defect.

    FWIW, sustin in continuare explicatia dintr-un mesaj anterior,
legata de st_blksize, care e consistenta si cu ce se intampla sub
OpenBSD.  Daca iti vei mentine interesul fata de subiectul asta pana
dupa Anul Nou, voi incerca sa argumentez si cu citate din sursele glibc.

> >    Pentru asta iti recomand fie un sistem cu man pages mai bine
> > scrise, fie o carte de UNIX.  Cum ar fi:
> >
> >     Stevens, W.R. - "Advanced Programming in the UNIX Environment",
> >         Addison-Wesley, Reading, Massachusetts, 1997.
> 
>       Ti le-ai recomandat si tie? Foarte rau daca nu.

    :-)

    Cu toate astea, eu iti urez un Craciun Fericit, si La Multi Ani!

    Liviu Daia

-- 
Dr. Liviu Daia                                  http://www.imar.ro/~daia

_______________________________________________
RLUG mailing list
RLUG@lists.lug.ro
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui