Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >Detaillierte Einführung in Dateideskriptoren und Dateizeiger unter Linux
In diesem Artikel werden hauptsächlich detaillierte Informationen zu Dateideskriptoren und Dateizeigern unter Linux vorgestellt. Freunde in Not können sich auf
Dateideskriptoren unter Linux-Deskriptoren und Dateizeiger beziehen
Dateikennung:
Lassen Sie uns zunächst verstehen, was eine Dateikennung ist?
Dateibeschreibung Ein Symbol ist ein Begriff in der Informatik ein abstraktes Konzept, das verwendet wird, um eine Referenz einer Datei auszudrücken.
Unter Linux speichert jeder Prozess eine Dateideskriptortabelle im Prozesskontrollblock (PCB). Der Dateideskriptor ist der Index dieser Tabelle. Es gibt einen
Zeiger auf die bereits geöffnete Datei.
Jeder Linux-Prozess sollte drei Standard-Dateideskriptoren haben, die drei Standard-Streams entsprechen.
Integer
|
Name | (unistd.h)Symbol Konstante | (stdio.h) Dateistream | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Standardeingabe | STDIN_DATEI NEIN |
stdin | ||||||||||||||||
1 | Standardausgabe | STDOUT_FILENO | stdout | ||||||||||||||||
2 | Standardfehler | STDERR_FILENO | stderr |
Vorgänge im Zusammenhang mit Dateideskriptoren:
Operation | |
---|---|
Dateideskriptorgenerierung | open(), socket() , pipe() usw. |
Vorgänge im Zusammenhang mit einem einzelnen Dateideskriptor | read(), write(), send (), fchmod () usw. |
Operationen im Zusammenhang mit mehreren Dateideskriptoren | select(), poll() usw . |
Vorgänge im Zusammenhang mit der Dateideskriptortabelle | close(), dup() usw . |
功能 | 操作 |
---|---|
文件描述符生成 | open()、socket()、pipe()等 |
与单一文件描述符相关的操作 | read()、write()、send()、fchmod()等 |
与复数文件描述符相关的操作 | select()、poll()等 |
与文件描述符表相关度的操作 | close()、dup()等 |
Der Dateizeiger ist der, den wir in verwenden C-Sprache
-Variable verwendet wird, um auf eine Datei zu zeigen. Dieser Zeiger wird als Dateizeiger bezeichnet. Über den Dateizeiger können wir verschiedene Vorgänge an der Datei ausführen, auf die verwiesen wird. Die C-Sprache verwendet Dateizeiger anstelle von Dateideskriptoren als I/O-Handles. Der Dateizeiger zeigt auf eine Datenstruktur namens FILE-Struktur im Benutzerbereich des Prozesses. Die FILE-Struktur enthält einen Puffer und einen Dateideskriptor. Der Dateizeiger ist ein gängiges Format der C-Sprache und daher relativ einfacher zu übertragen.
Normalerweise erhalten wir den Dateizeiger:Holen Sie sich den Zeiger später , können wir die Informationen des Dateideskriptors im Zeiger erhalten.
FILE *fp = fopen("test.txt","r");Der Dateideskriptor ist eindeutig, aber der Dateizeiger ist nicht eindeutig. Das
Objekt
, auf das der Dateizeiger zeigt, ist eindeutig.Konvertierung von Dateideskriptoren und Dateizeigern:
Der erste Parameter von fdopen ist ein offener Dateideskriptor, und mode gibt die Öffnungsmethode an
Stringint fileno(FILE *stream); FILE *fdopen(int fd,const char *mode);, dasselbe wie fopen, z. B. „w“ oder „r“.
filenoFunktion
, die den dem Dateistream entsprechenden Dateideskriptor zurückgibt, ist fehlgeschlagen. Rückgabe -1.Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Dateideskriptoren und Dateizeiger unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!