Ich bin ein Neuling, der gerade begann, Low-Level-Zeug und C zu lernen. Das könnte eine dumme Frage sein, aber ich bin verblüfft über Dateideskriptoren. Ich verstehe, dass wir den Systemaufruf dup2() oder dup() benötigen, um sie zu kopieren. Aber warum können wir sie nicht einfach kopieren, indem wir alten Variablen alte Werte zuweisen? Zum Beispiel, warum können wir dieWarum können wir Dateideskriptoren nicht kopieren, indem wir einfach den Wert neuen Variablen zuweisen?
int f[2];
pipe(f); // I call pipe just to create two file descriptors, nothing special
int new_descriptor = f[0]; // this line is where I'm confused
ist, weil die ganzen Zahlen, dass f [0], f [1] haben spezifische Bedeutung und ist eine Art von kodierten? Danke!
'dup' erstellt und gibt ein neues fd zurück, das auf dieselbe Datei verweist. Der fd ist ein Index in die Prozessdateitabelle, so dass "dup" tatsächlich den nächsten offenen Punkt in der Prozessdateitabelle findet, den Zeiger auf die Dateistruktur (im Kernel) an diesen Punkt kopiert und den Index an den Benutzerbereich zurückgibt. – evaitl