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: