Połączenia systemowe dostarczone przez jądro Linux są eksponowane w języku programowania C przez GLIBC. Gdy używane jest wywołanie systemowe, komunikujesz się z systemem operacyjnym, a po powrocie system systemu operacyjnego komunikuje się z tobą za pomocą parametrów zwracanych do funkcji połączenia systemowego (wartości zwracania).
System System Call:
Wywołanie systemowe STAT to wywołanie systemowe w Linux, aby sprawdzić status pliku, tak aby sprawdzić, kiedy plik został dostępny. System wywołania stat () faktycznie zwraca atrybuty pliku. Atrybuty pliku INODE są zasadniczo zwracane przez funkcję stat (). INODE zawiera metadane pliku. INODE zawiera: typ pliku, rozmiar pliku, gdy plik został dostępny (zmodyfikowany, usunięty), a także ścieżka pliku, identyfikator użytkownika i identyfikator grupy, linki pliku oraz fizyczny adres zawartości pliku.
Możemy powiedzieć, że inode zawiera wszystkie dane wymagane dla wywołania systemowego stat () i jest to numer indeksu pliku zapisywanego w tabeli INODE. Za każdym razem, gdy tworzysz plik, utworzony jest numer iDODE dla tego pliku. Korzystając z wywołania systemu STAT, można oglądać tabele systemowe.
Składnia wywołania systemu statystyki C:
Aby użyć wywołania systemu STAT w języku programowania C, musisz dołączyć następujący plik nagłówka:
#włączaćSTAT służy do uzyskania statusu pliku. Składnia wywołania systemu statystyki C może nie być taka sama dla każdego systemu operacyjnego. W Linux składnia wywołania systemu statystyk jest następująca:
int Stat (const char *ścieżka, struct stat *buf)Rodzaj powrotu funkcji w INT, jeśli funkcja zostanie pomyślnie wykonywana, 0 jest zwracane, jeśli pojawią się jakieś błędy, -1 zostanie zwrócony.
Tutaj const char *ścieżka Określa nazwę pliku. Jeśli ścieżka pliku jest łącznikiem symbolicznym, musisz określić link zamiast nazwy pliku.
Następnie w funkcji mamy strukturę statystyk, w której przechowywane są dane lub informacje o pliku, które wykorzystują wskaźnik nazwany BUF, który jest przekazywany jako paramteter i wypełniony podczas wykonywania połączenia i czyte przez użytkownika.
Struktura statystyk:
Struktura STAT, która jest zdefiniowana w pliku nagłówka, zawiera następujące pola:
struct StatOpis:
Flagi | Opis | Wartość flagi |
---|---|---|
S_ifmt | Maska bitowa używana do uzyskania trybu wartości pliku | 0170000 |
S_ifsock | Stała pliku gniazda | 0140000 |
S_iflink | Stała pliku symbolicznego linku | 0120000 |
S_ifreg | Stała pliku dla zwykłego pliku | 0100000 |
S_ifblk | Stała pliku dla pliku blokowego | 0060000 |
S_ifdir | Stała pliku dla pliku katalogu | 0040000 |
S_ifchr | Stała pliku dla pliku znaków | 0020000 |
S_ififo | Stała pliku FIFO | 0010000 |
S_isuid | Ustaw bit identyfikatora użytkownika | 0004000 |
S_isgid | Ustaw bit ID grupy | 0002000 |
S_isvtx | Lepki bit, który wskazuje na wspólny tekst | 0001000 |
S_irwxu | Uprawnienia właściciela (czytaj, zapisz, wykonaj) | 00700 |
S_irusr | Przeczytaj uprawnienia dla właściciela | 00400 |
S_iwusr | Napisz uprawnienia dla właściciela | 00200 |
S_ixusr | Wykonaj uprawnienia dla właściciela | 00100 |
S_IRWXG | Uprawnienia do grupy (czytaj, zapisz, wykonaj) | 00070 |
S_irgrp | Przeczytaj uprawnienia do grupy | 00040 |
S_IWGRP | Napisz uprawnienia do grupy | 00020 |
S_ixgrp | Wykonaj uprawnienia do grupy | 00010 |
S_IRWXO | Uprawnienia dla innych (czytaj, pisz, wykonaj) | 00007 |
S_iroth | Przeczytaj uprawnienia dla innych | 00004 |
S_iwoth | Napisz uprawnienia dla innych | 00002 |
S_ixoth | Wykonaj uprawnienia dla innych | 00001 |
Jak korzystać z wywołania systemu statystyk:
Poniższy przykład pokazuje, jak używać wywołania systemu statystyk w języku programowania C w Linux, Ubuntu.
PRZYKŁAD 1:
W poniższym kodzie znajdziemy tryb pliku:
KOD:
#włączaćKompilowanie i uruchomienie programu zwraca się jak poniżej:
W tym kodzie przekazaliśmy nazwę pliku w wywołaniu systemu STAT, a następnie wskaźnik do Stat struct, który jest Sfile. Wskaźnik do Stat struktura jest następnie używany do dostępu do ST_Mode, który wyświetla tryb pliku za pomocą instrukcji printf.
Plik nagłówka jest używany, abyś mógł użyć wywołania systemu statystyk. Plik nagłówka to standardowy plik biblioteki wejściowej/wyjściowej, dzięki czemu można użyć printf lub scanf w kodzie C.
Przykład 2:
W poniższym kodzie otrzymamy informacje o pliku za pomocą STAT System Call:
KOD:
#włączaćWYJŚCIE:
W powyższym kodzie C wprowadziliśmy nazwę pliku, a jeśli plik nie istnieje, wykonanie programu zostanie zatrzymane. Zostaje to pokazane na poniższym obrazku:
Jeśli nasz plik istnieje, funkcja sfile (n) zostanie wywołana, w której przekazaliśmy nazwę pliku. Wewnątrz funkcji, przede wszystkim użyliśmy wywołania systemu STAT, jeśli STAT () zwróci -1, to musi wystąpić jakikolwiek błąd, aby komunikat zostanie wydrukowany, a wykonanie programu zostanie zatrzymane.
Następnie w instrukcji printf użyliśmy nazwy funkcji i separatora kropki, aby uzyskać dostęp do członków danych Stat struct.
Następnie w trybie pliku uzyskaliśmy dostęp do makr lub flag ST_MODE. Tutaj logiczny i operator służy do drukowania odpowiednich trybów. Sprawdziliśmy uprawnienia dla użytkownika, grupy i innych pod kątem określonego pliku (nazwa pliku wprowadzona przez użytkownika).
Dzięki temu możesz zobaczyć, jak korzystać z wywołania systemu STAT z języka programowania C, aby uzyskać informacje z jądra systemu operacyjnego o plikach. Jeśli masz pytanie, powiedz nam za pośrednictwem sekcji komentarza.