Re: Standard-Fehlerausgabe pipen
Hallo,
Martin Steigerwald wrote:
> Die vier Writes möchte ich haben:
Warum eigentlich (so nebenbei)?
> 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
>
> [...]
>
> Ich erhalte immer:
>
> martin@deepdance:~ -> strace free 2>&1 1>/dev/null | tail -n8
> read(3, "MemTotal: 775136 kB\nMemFre"..., 1023) = 598
> fstat64(1, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
> ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbff83c74) = -1 ENOTTY
> (Inappropriate ioctl for device)
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
> = 0xb7eea000
> write(1, " total used "..., 230) = 230
> munmap(0xb7eea000, 4096) = 0
> exit_group(0) = ?
> Process 6464 detached
>
> Da ist nur der erste Write und eben die Fehlermeldung zu dem ioctl-Call,
> der aber im der obigen test-Datei nicht ausgeführt wird.
Der ioctl schlägt fehl, als Folge wird ein anderer (nicht nur der erste)
write-Befehl ausgeführt. Bei diesem write werden einmal 230 Zeichen
ausgegeben, beim ersten write 74+74+41+41 Zeichen.
> Ich glaub langsam, dass da strace einfach nicht mitspielt... vielleicht
> ist der ioctl von strace und nicht von free... Könnte das ein Bug sein?
> Oder einfach ein Nebeneffekt von strace? Meinungen?
Ich denke, das ist ein Nebeneffekt der Ausgabeumleitung, evtl. in
Verbindung von strace.
Wolf
--
Büroschimpfwort des Tages: Vorkoster - Mitarbeiter, der pünktlich zur
Kantinenöffnung Mittagspause macht. (Henrik Karcher)
Reply to: