Funkcja RealPath 3 C

Funkcja RealPath 3 C
Pracując w systemach operacyjnych Linux lub Windows, możesz napotkać wiele plików i katalogów. Wszystkie pliki i katalogi dowolnego systemu operacyjnego mają jakąś ścieżkę z katalogu głównego. W wielu systemach operacyjnych ścieżka ta można zobaczyć na górze eksploratora plików dla konkretnego pliku lub folderu. Biblioteka POSIX C wymyśliła funkcję „realPath”, aby wyświetlić pełną i oryginalną ścieżkę dowolnego pliku z konkretnego bieżącego katalogu. Zacznijmy w systemie operacyjnym Kali Linux.

Przykład 1:

W naszym pierwszym przykładzie przyjrzymy się prostemu kodowi C za pomocą funkcji „realPath”, aby uzyskać prawdziwą i całą ścieżkę niektórych plików z obecnego katalogu roboczego systemu. Musimy użyć w sumie 6 podstawowych plików nagłówkowych na początku tego kodu dołączonego za pomocą słowa kluczowego „#Include”. Niektóre biblioteki są standardowymi bibliotekami do użycia wejścia strumienia wyjściowego w kodzie, niektóre są tutaj, aby wykorzystać wartości ciągów, a niektóre są wykorzystywane do wykonywania obsługi wyjątków. Funkcja tego kodu () definiuje tablicę typu o nazwie „Bufor” z wbudowanym rozmiarem „ścieżki maksymalnej” lub 0. Ta tablica jest wykorzystywana do uratowania prawdziwej i pełnej ścieżki niektórych katalogów.

Funkcja realPath () bierze „jakiś plik.nazwa pliku txt ”z tablicą„ bufor ”, która jest przekazywana do niej jako argument za przechowywanie całej ścieżki. Wskaźnik „ścieżka” typu znaku jest inicjowana, aby wskazać adres zmiennej „bufor” zawierającej ścieżkę pliku przekazywaną przez funkcję realPath ().

Oto oświadczenie „IF-ELSE”, aby sprawdzić, czy otrzymaliśmy prawidłowe odniesienie do ścieżki pliku, czy też wskaźnik „ścieżki” jest pusty. Jeśli zwróci prawidłowe odniesienie, funkcja printF służy do wyświetlania tekstu „Pełna ścieżka pliku pewnego pliku.txt: ”wraz z prawdziwą ścieżką konkretnego pliku. W przeciwnym razie instrukcja else jest wykonywana, a instrukcja printf używana w nim w nim spowoduje błąd za pomocą funkcji „strerror”, biorąc „errno” jako argument. Funkcja Perror służy do ponownego wyświetlania tego samego błędu z nazwą błędu „realPath”. Aby uzyskać błąd, funkcja wyjścia tego kodu kończy program tak szybko, jak to możliwe. Zapiszmy nasz pierwszy przykład i skompiluj go, aby zobaczyć jego wyniki.


Używamy kompilatora GCC, aby skompilować realPath.plik c z opcją -o do wygenerowania pliku obiektu o nazwie „realpath.Out ”w tym samym katalogu roboczym. To polecenie zakończyło się sukcesem i otrzymaliśmy ten sam plik obiektu w domowym katalogu „SRC” zgodnie z wynikami instrukcji „LS”.


Teraz wykonujemy plik obiektu, który właśnie stworzyliśmy za pomocą „./”Znaki w tym samym katalogu roboczym. Wyjście tego polecenia pokazuje nam całą ścieżkę dla tego konkretnego pliku, zaczynając od folderu głównego, takiego jak „/home/linux/src/somefile.tekst".

Przykład 2:

Zacznijmy od innego przykładu, aby wykorzystać funkcję realPath (), aby uzyskać prawdziwą ścieżkę niektórych plików. W ramach tego kodu C dodaliśmy te same 6 plików nagłówkowych za pomocą słowa kluczowego „#Include”. Następnie funkcja main () jest inicjowana z zmienną wskaźnika typu „ścieżka linków”, która przechowuje jakąś ścieżkę, taką jak „/src/shooplefile.tekst". Do przechowywania prawdziwej ścieżki „pewnego pliku jest używana tablica„ rzeczywistej ścieżki.plik txt ”z„ +1 ”, aby pobrać ścieżkę pliku wymienionego po drugim znaku„/”. Zdefiniowany jest kolejny wskaźnik „ptr” typu znaku.

Przekazujemy zmienną wskaźnika ścieżki łącza i faktyczną tablicę ścieżki do funkcji realpath (), aby uzyskać całą ścieżkę „/src/jakaś plik.txt ”do tablicy„ faktycznej ścieżki ”. Zwrócony wynik jest zapisywany do zmiennej wskaźnika „PTR”. W części „If”, jeśli „ptr” zwróć wynik funkcji realpath (), która zawiera pewien numer odniesienia, instrukcja printf wyświetla rzeczywistą ścieżkę za pomocą faktycznej tablicy ścieżki. W przeciwnym razie część tego kodu jest wykonywana i generuje błąd poprzez użycie funkcji Strerror za pomocą zmiennej „errno” jako argumentu. Funkcją wyjścia jest zakończenie tego programu.


Skompilowaliśmy ten kod C z kompilatorem GCC i stworzyliśmy „RealPath1.out „plik obiektu poprzedzony opcją -o.


Po uruchomieniu pliku obiektowego za pomocą „./”Znak otrzymaliśmy błąd, ponieważ nie dostarczyliśmy prawidłowego formatu ścieżki pliku„/src/shotFile.tekst".


Zaktualizujmy ponownie kod, aby uniknąć tego błędu wkrótce po wykonaniu pliku obiektu. Aktualizujemy jego pierwszą linię w ramach głównej funkcji,. Wskaźnik typu znaków „ścieżka linków” zawierająca określony plik z jednym folderem poniżej jest aktualizowany. Teraz dodajemy nazwę „jakiś plik.plik txt ”, który znajduje się w bieżącym katalogu roboczym„ SRC ”zamiast„/src/somefile.TXT ”Ścieżka do folderu katalogu roboczego. Reszta kodu jest używana bez żadnych zmian. Zapisz i uruchom ten kod, aby zobaczyć wyniki.


Po skompilowaniu tego pliku C z kompilatorem GCC i utworzeniu „RealPath1.OUT „Plik obiektowy z obiektem -o, jest gotowy do wykonania.


Po wykonaniu pliku obiektowego C prawdziwa i pełna ścieżka konkretnego pliku „pewnego pliku.txt ”jest pokazany na ekranie terminalu.

Wniosek

W tym artykule dotyczy użycia metody realPath biblioteki Posx C, aby pokazać prawdziwą i pełną ścieżkę jakiegoś konkretnego pliku. W tym celu wypróbowaliśmy dwa przykłady C na platformie Kali Linux. W naszych przykładach przyjrzeliśmy się, jak ta funkcja reaguje na jedną nazwę pliku lub z określoną ścieżką.