[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Standard-Fehlerausgabe pipen



Hallo Martin,

Martin Steigerwald <Martin@lichtvoll.de> wrote:
> vielen Dank für die ganzen  Hinweise!
>
> martin@deepdance:~ -> strace free 2>test
>              total       used       free     shared    buffers     cached
> Mem:        775136     753772      21364          0          0     404264
> -/+ buffers/cache:     349508     425628
> Swap:       979924      74992     904932
>
>
> Die vier Writes möchte ich haben:
>
> martin@deepdance:~ -> tail -n8 test
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) 
> = 0xb7f7b000
> write(1, "             total       used   "..., 74) = 74
> write(1, "Mem:        775136     753772   "..., 74) = 74
> write(1, "-/+ buffers/cache:     349508   "..., 41) = 41
> write(1, "Swap:       979924      74992   "..., 41) = 41
> munmap(0xb7f7b000, 4096)                = 0
> exit_group(0)                           = ?
> Process 3719 detached

% strace -e write free 2>&1 >/dev/tty | less

Das versaut dir zwar den Bildschirm, aber mir fällt nichts besseres ein.
Du wirst wahrscheinlich Opfer einer Optimierung in der libc, die prüft,
ob die Standardausgabe eine Konsole ist und wenn nicht puffert es die
Ausgabe etwas mehr – erspart unter Umständen etwas, da nur ein
System‐Call write gemacht werden muss. Eine Ebene höher – im free – ist
das nämlich ein printf – siehe ltrace -S.

Nächtliche Grüße, Jörg.
-- 
Der Klügere gibt nach ....
..deshalb regieren die Dummen die Welt!



Reply to: