[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