[linux-l] Du und ls geben verschiedene Werte an
Oliver Bandel
oliver at first.in-berlin.de
So Nov 12 19:27:09 CET 2006
On Sun, Nov 12, 2006 at 06:48:09PM +0100, Steffen Dettmer wrote:
> * Michael Sucha wrote on Sun, Nov 12, 2006 at 17:30 +0100:
> > Hier noch mal die Ausgaben:
> >
> > % du -sch core.4753
> > % 32M core.4753
> > ls -lh core.4753
> > -rw------- 1 michael michael 121M Nov 7 00:42 core.4753
>
> Was passiert eigentlich, wenn man sowas macht wie:
>
> fd = open("file", ...)
> write(fd, buffer, 4096);
> seek(fd, 1024*1024, FSEEK_SET);
> write(fd, buffer, 4096);
> close(fd);
>
> (hab lokal hier gerade keine manpages zu Hand, würd ich ja sonst fast
> mal probieren ;)).
>
> Wenn das ganz schlau wäre, könnte es ja eine ca. 1 MB grosse Datei
> erstellen, die nur 2 * 4 KB (also 2 * FS-Blockgrösse) viel Platz
> verbraucht, weil die anderen Daten ja gar nicht geschrieben wurden (dann
> muss aber jemand beim Lesen aufpassen, dass nicht etwa uninitilisierte
> Daten "gelesen" werden, die evtl. vertrauliche Informationen von anderen
> Benutzern oder Files enthalten).
Hmhhh, grübel, wie war das noch...
Die Datei ist dann 1MB plus nach dem seek geschriebene Anzahl Bytes groß.
Allerdings sind da in derMittre dann 0-Bytes, welche
meist zu Problemen führen dürften ;-)
BTW meinst Du wohl lseek(2), nehme ich malan.
>
> Würde so ein Vorgehen erklären, dass ls und du sich so verhalten?
weiss nicht...
..dürfte IMHO aber nicht der Grund sein.
Gruß,
Oliver
Mehr Informationen über die Mailingliste linux-l