Jak uzyskać flagi deskryptorów plików "fdflagi "rezydujące w tablicy deskryptorów plików powiązane z dowolnym deskryptorem otwartego pliku? Chciałbym wiedzieć, aby napisać kod ręcznie lub co najmniej funkcje i struktury do dalszego badania, nie korzystając z funkcji fcntl lub przeglądając wpisy / proc.
Poniższy obrazek pokazuje, że tabela deskryptorów plików dla danego procesu ma pole flag i pole wskaźnika pliku. Jak mogę programowo uzyskać dostęp do tych pól?
Odpowiedzi:
1 dla odpowiedzi № 1Możesz uzyskać dostęp /proc/PID/fdinfo/FD
plik zawierający flags
w ósemkowym:
$ cat /proc/$$/fdinfo/0
pos: 0
flags: 0100002
mnt_id: 20
W tym przykładzie 0100002 = O_LARGFILE|O_RDWR
0 dla odpowiedzi nr 2
fcntl()
jest wywołaniem systemowym, a nie "biblioteką". To jest sposób pobierania flag powiązanych z deskryptorem pliku.