Połączenia systemowe dają środowisko trybowi usługi, który jest dostępny w systemie operacyjnym. Nasz program może wykonać w dwóch trybach. Jednym z nich jest tryb użytkownika, a inny jest tryb jądra. Jeśli program jest wykonywany w trybie jądra, program ma prawo do bezpośrednio dostępu do pamięci, sprzętu i innych zasobów.
Połączenia systemowe są komponentami systemu operacyjnego, które mają prawo do korzystania z wszystkich plików systemowych."
Co to jest funkcja LSTAT ()?
Funkcja LSTAT () będzie kontrolować cały status systemu i zwróci informacje o specjalnym linku zwanym linkiem symbolicznym. Stat () i fstat () funkcja podaje informacje o konkretnym pliku, ale funkcja LSTAT () odnosi się do linku, który wskazuje konkretny plik.
Składnia
Składnia funkcji LSTAT () jest -
int lstat (const char *ścieżka, struct stat *buf);
Tutaj, wewnątrz funkcji LSTAT (), przekazamy dwa parametry jako argument.
Pierwszym parametrem funkcji jest ścieżka, która podaje informacje o jej identyfikacji i prawdopodobne lub rzeczywiste źródło pliku.
Kolejnym parametrem jest buff, który podaje informacje o adresie struktury statystyki. Ta struktura statystyk zawiera wszystkie zaktualizowane informacje o konkretnym pliku, którego wskazuje wskaźnik *BUF.
Struktura funkcji LSTAT ()
System zwany funkcją lstat () zwraca strukturę zwaną strukturą statystyki. Członkowie danych tej struktury statystyk to:
Makra
Funkcja LSTAT () ma Stast Struction, która zawiera kilka rodzajów makr. Te makra pomagają funkcji LSTAT () rozpoznawanie typu plików. Nazwa tych makr to:
Teraz zobaczymy przykład programowania, aby zademonstrować funkcję połączenia systemowego LSTAT ().
PROGRAMOWANIE Przykład-1
#włączać
#włączać
#włączać
#włączać
#włączać
#włączać
int main ()
char fl [] = "t.c ", sln [] =" t.link ";
struct Stat inf;
int fd;
if ((fd = creaty (fl, s_iwusr))<0)
Perror („creat () error”);
w przeciwnym razie
Zamknij (FD);
if (link (fl, sln)!= 0)
Perror („link () błąd”);
w przeciwnym razie
if (LSTAT (SLN i inf)!= 0)
Perror („lstat () błąd”);
w przeciwnym razie
PUTS („Uzyskamy poniżej informacje z LSTAT () dla pliku:”);
printf („Linki plików:%d \ n”, (int) inf.st_nlink);
printf („plik uid:%d \ n”, (int) inf.st_uid);
printf („plik inode:%d \ n”, (int) inf.st_ino);
printf („plik GID:%d \ n”, (int) inf.st_gid);
printf („pliku identyfikator dev:%d \ n”, (int) inf.st_dev);
printf („Tryb pliku:%08x \ n”, inf.st_mode);
unlink (SLN);
unlink (fl);
powrót 0;
Wyjście
Wyjaśnienie
Tutaj zobaczymy wyjście za pomocą funkcji LSTAT () na temat statusu konkretnego pliku, który jest tworzony przez programistę. W tym programie utworzyliśmy zwykły plik, a także stworzyliśmy jego symboliczny link. Pokazuje informacje o I-Node, identyfikatorze dev, trybie, brak linków, UID i GID. Funkcja LSTAT () zawiera wszystkie szczegółowe informacje o utworzonym pliku i odpowiadającym mu miękkim łącze.
PROGRAMOWANIE Przykład-2
Zobaczmy kolejną szczegółową implementację funkcji LSTAT ().
#włączać
#włączać
#włączać
#włączać
#włączać
int main (int argc, char *argv [])
struct Stat a;
if (argc != 2)
fprintf (stderr, „Wprowadź nazwę pliku jako 1st argument: %s \ n”, argv [0]);
exit (exit_failure);
if (lstat (argv [1] i a) == -1)
Perror („jakiś błąd dla LSTAT”);
exit (exit_failure);
printf („więc typ pliku wejściowego jest =>”);
Jeśli.st_mode & s_ifmt) == s_ifdir)
printf („Directory \ n”);
inaczej, jeśli (a.st_mode & s_ifmt) == s_ififo)
printf („FIFO/PURE \ N”);
inaczej, jeśli (a.st_mode & s_ifmt) == s_ifchr)
printf („urządzenie postaci \ n”);
inaczej, jeśli (a.st_mode & s_ifmt) == s_ifblk)
printf („urządzenie blokowe \ n”);
inaczej, jeśli (a.st_mode & s_ifmt) == s_ifreg)
printf („regularny \ n”);
inaczej, jeśli (a.st_mode & s_ifmt) == s_ifsock)
printf („gniazdo \ n”);
inaczej, jeśli (a.st_mode & s_ifmt) == s_iflnk)
printf („link symboliczny \ n”);
w przeciwnym razie
printf („nieznany \ n”);
printf ("nie. listy linków:%ld \ n ", (długi) a.st_nlink);
printf („Własność: uid =%ld gid =%ld \ n”,
(długi) a.st_uid, (długi) a.st_gid);
printf („inode no %ld \ n”, (długi) a.st_ino);
printf („Tryb: %lo (Octal) \ n”,
(długie bez podpisu) a.st_mode);
printf („Ostatni czas zmiany to:%s”, ctime (i a.st_ctime));
printf („Ostatni czas dostępu to: %s”, ctime (i a.st_atime));
printf („Ostatnia zmiana treści czasu pliku to: %s”, ctime (i.st_mtime));
printf („Preferowana długość bloków podawania I/O: %bajtów \ n”,
(długi) a.st_blkSize);
printf („Długość pliku to: %bajtów lld \ n”,
(długi).st_size);
printf („Liczenie nie. z używanych bloków %lld \ n ”,
(długi).st_blocks);
exit (exit_success);
Wyjście
Wyjaśnienie
Tutaj pokażemy każdą perspektywę funkcji połączenia systemowego LSTAT ().
Przy pierwszym wyjściu wpiszmy nazwę pliku bez informacji o jego ścieżce. Jako wyjście otrzymamy korzystanie z programu. Program potrzebuje nazwy/ścieżki pliku wejściowego jako 1. argumentu.
W następnym wyjściu pokażemy informacje o pliku urządzenia blokowego. Tutaj 5+0 rejestruje i 5+0 rejestruje się, a typ pliku wejściowego jest urządzeniem blokowym.
W następnym wyjściu utworzymy plik o nazwie „Papan_Char_Device_file„Który typ jest urządzeniem znakowym. Funkcja LSTAT () pomoże jej podać wszystkie informacje związane z tym urządzeniem znakowym.
Następnie stworzymy katalog o nazwie „Habibpur”Który typ pliku jest katalogiem. lstat () utworzy wszystkie informacje o tym pliku.
Następnie utworzymy kolejny plik o nazwie „Papan_fifo_file”, Którego typem pliku jest FIFO/RURE. Otrzymamy informacje o funkcji LSTAT dla pliku jako wyjściowe.
Następnie stworzymy symboliczny link o nazwie „Puja.tekst”Pliku o nazwie„Avishek.tekst”I uzyskaj funkcję LSTAT podaną informacje o pliku jako wyjściowe.
Następnie sprawdzimy typ pliku „Avishek.tekst,”, Który jest zwykłym plikem [już utworzonym w poprzednim kroku].
I na koniec utworzymy kolejny plik o nazwie ” Nadia_Socket_file.skarpetka”, Który typ pliku jest gniazdem i uzyskaj wszystkie szczegółowe informacje o tym pliku.
Za pomocą funkcji LSTAT () rozpoznamy wszystkie pliki.
Wniosek
W tym miejscu wspomnieliśmy o każdym aspekcie wywołania systemu funkcji LSTAT (). Widząc wszystkie cechy i typ implementacji funkcji LSTAT (), możemy wyraźnie zrozumieć, że jest to bardzo ważna funkcja wywołania systemu do uzyskania wszystkich atrybutów konkretnego pliku, który utworzyliśmy w naszym systemie, a system będzie reagował zgodnie z do instrukcji polecenia funkcji LSTAT ().