05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

22 2 Programmieren <strong>mit</strong> <strong>Unix</strong>-Prozessen<br />

die zuvor geöffnete Datei über den zugehörigen Dateideskriptor referenziert<br />

werden. Der Wertebereich für Filedeskriptoren ist durch IEEE Std 1003.1-<br />

2001 auf den Bereich von Null bis OPEN_MAX-1 festgelegt. Ein Prozeß kann<br />

demnach nicht mehr als OPEN_MAX gleichzeitig geöffnete Dateien haben, wobei<br />

OPEN_MAX ≥ _POSIX_OPEN_MAX = 20 gilt.<br />

Wie Abb. 2.5 zeigt, sind Dateideskriptoren letzten Endes nichts anderes als<br />

Indizes in eine prozeßeigene Dateideskriptor-Tabelle. Drei speziell vereinbarte<br />

Dateideskriptoren dienen traditionell dem Zugriff auf die Standard-Eingabe<br />

(STDIN_FILENO bzw. 0), Standard-Ausgabe (STDOUT_FILENO bzw. 1) <strong>und</strong><br />

Standard-Fehlerausgabe (STDERR_FILENO bzw. 2). Diese Konvention wird vor<br />

allem von den <strong>Unix</strong>-Shells aufrecht erhalten, die die Ein- <strong>und</strong> Ausgabe vom<br />

<strong>und</strong> zum Terminal beim Programmstart <strong>mit</strong> den entsprechenden Dateideskriptoren<br />

verknüpfen.<br />

fd0<br />

fd1<br />

fd2<br />

fd3<br />

fd4<br />

. . .<br />

Dateideskriptor<br />

Tabelle<br />

Datei A<br />

Datei B<br />

Datei C<br />

. . .<br />

Beschreibung<br />

offener Dateien<br />

Abb. 2.5. Dateideskriptoren <strong>und</strong> geöffnete Dateien<br />

Der Systemkern verwaltet für jeden Prozeß in dessen Benutzerstruktur (vgl.<br />

dazu Abschnitt 2.1.4) eine eigene Dateideskriptor-Tabelle. Öffnet ein Prozeß<br />

eine Datei, so wird dies in der zugehörigen, prozeßeigenen Tabelle notiert.<br />

Wird eine Datei von einem Prozeß mehrfach geöffnet, so enthält die<br />

Dateideskriptor-Tabelle auch mehrere Einträge für diese Datei. In jedem Eintrag<br />

werden<br />

• die Dateideskriptor-Attribute <strong>und</strong><br />

• ein Zeiger auf eine Beschreibung der offenen Datei<br />

gespeichert. Der Terminus Beschreibung der offenen Datei ist eine Abstraktion<br />

der genauen Implementierungs-Details, welche für unsere Zwecke nicht weiter<br />

von Bedeutung sind. Die Beschreibung umfaßt Informationen darüber, wie<br />

ein Prozeß oder eine Menge von Prozessen auf eine Datei zugreifen. Wichtig

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!