Ich versuche, das ganze Bild mit Dateideskriptoren zu bekommen. Angenommen, ich habe process1, das anfangs die folgenden Dateideskriptoren hat:
_process1_
| |
| 0 stdin |
| 1 stdout |
| 2 stderr |
|__________|
Dann schließe ich Dateideskriptor 1:
close(1);
Der Dateideskriptor 1 übersetzt (zeigt) in die stdout FILE-Struktur in der Open Files-Tabelle des Kernels .
Mit dem obigen Code wird der Dateideskriptor 1 aus der Prozesstabelle gelöscht.
_process1_
| |
| 0 stdin |
| 2 stderr |
|__________|
Aber was passiert im Kernel? Wird die stdout
Dateistruktur freigegeben? Wie ist das möglich, wenn stdout eine spezielle Datei (der Monitor) ist und wahrscheinlich von anderen Prozessen verwendet wird? Was ist mit FILE-Strukturen, die nur normale Dateien sind (z. B. TXT)? Was ist, wenn eine solche Datei von einem anderen Prozess verwendet wird?