/ / Obtención manual de información sobre la tabla de descriptores de archivos de Linux - c, linux, linux-kernel, descriptor de archivos

Obtención manual de información sobre la tabla de descriptores de archivos de Linux: c, linux, linux-kernel, descriptor de archivos

¿Cómo puedo obtener las banderas del descriptor de archivo "fd¿Las "banderas" que residen en la tabla de descriptores de archivos asociadas con cualquier descriptor de archivos abiertos? Me gustaría saber escribir el código manualmente o al menos qué funciones y estructuras seguir investigando sin usar la función fcntl o viendo las entradas / proc.

La imagen a continuación muestra que la tabla del descriptor de archivos para un proceso dado tiene un campo de indicadores y un campo de puntero de archivo. ¿Cómo puedo acceder a estos campos programáticamente?

enter image description here

Respuestas

1 para la respuesta № 1

Puedes entrar /proc/PID/fdinfo/FD archivo que contiene flags en octal:

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

En este ejemplo, 0100002 = O_LARGFILE|O_RDWR


0 para la respuesta № 2

fcntl() es una llamada al sistema, no "una biblioteca". Eso es la forma en que recupera las banderas asociadas con un descriptor de archivo.