Wie kann ich die Datei-Deskriptor-Flags "fdflags "in der Dateideskriptor-Tabelle, die jedem offenen Dateideskriptor zugeordnet ist? Ich würde gerne wissen, wie man den Code manuell schreibt oder zumindest welche Funktionen und Strukturen er weiter erforscht, ohne die fcntl-Funktion zu verwenden oder die / proc-Einträge anzuzeigen.
Das folgende Bild zeigt, dass die Dateideskriptortabelle für einen bestimmten Prozess ein Flag-Feld und ein Dateizeigerfeld aufweist. Wie kann ich programmatisch auf diese Felder zugreifen?
Antworten:
1 für die Antwort № 1Sie können darauf zugreifen /proc/PID/fdinfo/FD
Datei, die enthält flags
in Oktal:
$ cat /proc/$$/fdinfo/0
pos: 0
flags: 0100002
mnt_id: 20
In diesem Beispiel 0100002 = O_LARGFILE|O_RDWR
0 für die Antwort № 2
fcntl()
ist ein Systemaufruf, keine "Bibliothek". Es ist die Art, wie Sie die Flags abrufen, die einem Dateideskriptor zugeordnet sind.