/ / Ręczne uzyskiwanie informacji o tabeli deskryptorów plików Linux - c, linux, linux-kernel, deskryptor plików

Ręczne uzyskiwanie informacji o tabeli deskryptorów plików Linux - c, linux, linux-kernel, deskryptor plików

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?

wprowadź opis obrazu tutaj

Odpowiedzi:

1 dla odpowiedzi № 1

Moż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.