2017-10-15 19 views
0

Comment puis-je obtenir les drapeaux de descripteur de fichier 'fd flags' résidant dans la table des descripteurs de fichiers associée à un descripteur de fichier ouvert? Je voudrais savoir écrire le code manuellement ou au moins quelles fonctions et structures rechercher plus loin sans utiliser la fonction fcntl ou en regardant les entrées/proc.Obtention manuelle d'informations sur le descripteur de fichier Linux Tableau

L'image ci-dessous montre que la table des descripteurs de fichier pour un processus donné possède un champ flags et un champ pointeur de fichier. Comment puis-je programmer ces champs?

enter image description here

Répondre

1

Vous pouvez accéder au fichier /proc/PID/fdinfo/FD qui contient flags en octal:

$ cat /proc/$$/fdinfo/0 
pos: 0 
flags: 0100002 
mnt_id: 20 

Dans cet exemple, 0100002 = O_LARGFILE|O_RDWR

+0

Juste édité ma question, est-ce possible de faire ceci sans regarder le répertoire de proc? –

0

fcntl() est un appel système, et non pas "une bibliothèque". Il est la façon dont vous récupérez les drapeaux associés à un descripteur de fichier.