nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

write vs. voller Datentraeger

Von: Stefan Reuther (stefan.news@arcor.de) [Profil]
Datum: 21.07.2009 19:44
Message-ID: <h455rc.13s.1@stefan.msgid.phost.de>
Newsgroup: de.comp.os.unix.programming
Hallo,

ich habe hier (in einer Embedded-Umgebung, die sich teilweise für ein
Unix hält) einen Filesystem-Stack implementiert. Meine Implementation
von 'write' liefert, wenn der Datenträger voll ist, 0. das entspricht
z.B. der Beschreibung in dieser Manpage:
<http://www.freebsd.org/cgi/man.cgi?query=write&apropos=0&sektion=2&manpath
=SuSE+Linux%2Fi386+11.0&format=html>
"On success, the number of bytes written is returned (zero indicates
nothing was written)."

Nun haben wir festgestellt, dass die verwendete Implementation von stdio
(nur im Objektcode verfügbar) 'fwrite' offenbar so implementiert:
int nbytes = size*count;
while (nbytes > 0) {
int written = write(fd, buffer, nbytes);
if (written < 0) return -1;
buffer += written, nbytes -= written;
}
Heißt: sie geht bei vollem Datenträger in eine Endlosschleife.

Nun die Frage: wer hat recht? Beziehungsweise: was ist so üblich? Muss
mein 'write' in diesem Fall z.B. ENOSPC zurückgeben, oder darf ich obige
stdio dem Hersteller um die Ohren hauen?


Stefan


[ Auf dieses Posting antworten ]

Antworten