C read() und write() while-Schleife
Hier ist der Beispiel-code:
int nbajt; int buf[];
//we opened file and get descriptor fd
while((nbajt = read(fd, buf, 5)) > 0){
if (write(fd2, buf, nlbajt) == -1){
perror("ERROR");
exit(1);
}
}
Ich verstehe nicht, wie es ist zu arbeiten, wenn wir verwenden Sie while-Schleife. Wie oft diese Schleife wird fortgesetzt?(mal von den lengs von buf?). Wird nbajt hat nur Werte von 1 oder 0 + buf Datei-position ändern 1 nach jeder Schleife Schritt? Also im ersten Schritt haben wir nlbajt=1, und wir nehmen buf ersten position char und dann schreiben Sie es zu fd2?. Am Ende haben wir nlbajt==0
so bedeutet dies, es ist das Ende der Datei? Ich wäre dankbar für die Prüfung, wenn ich falsch bin.Meine größte Sorge ist, wie nbajt Wert verändert. Wie ist es diffrent für diese Haltung:
nbajt = read(fd, buf, 5));
write(fd2, buf, sizeof(a));
- Haben Sie Lesen Sie die Dokumentation für
read()
so verstehen Sie die Argumente und den Rückgabewert? - ich war mit Mann. Aber ich verstehe es nur, wenn wir das nicht mit while-Schleife. Ausgelesene Anzahl der bytes, die gelesen wurden. Ich vorgenommen änderung für buf.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die read() hat, die unterhalb Prototyp:
Es gibt Anzahl der bytes, die erfolgreich gelesen . 0, wenn EOF erreicht ist.-1 wenn ein Fehler aufgetreten ist.
Ja
nlbajt = 0
bedeutet EOF hier.