Funkcja getCwd w języku c

Funkcja getCwd w języku c

Konfigurowanie działającego katalogu zaczynającego się od katalogu głównego Linux, otwiera możliwość dostępu i pracy z całą strukturą pliku w różnych folderach systemowych i użytkowników.

Język C zapewnia funkcję CHDIR (.

W niniejszym artykule z Linux dowiesz się, jak korzystać z funkcji getCwd (), aby zapytać o katalog, w którym aktualnie pracujesz. Wyjaśnimy teoretyczne funkcjonowanie tej funkcji, jej składnię, typy jej argumentów wejściowych i wyjściowych oraz każdy typ danych.

Aby korzystać z tej funkcji w praktyczny sposób, zastosujemy wszystko, czego nauczyliśmy się poprzez praktyczny przykład, w którym uczysz się krok po kroku, jak korzystać z tej funkcji do pobrania obecnego katalogu roboczego.

Składnia funkcji getCwd () w języku c

char *getCwd (char *buf, rozmiar size_t);

Opis funkcji getCwd () w języku c

Funkcja getCwd () pyta o bieżący katalog roboczy programu wywołującego lub procesu. Ta funkcja zwraca wskaźnik do tablicy znaków „BUF wielkości”, która zawiera ciąg z bezwzględną ścieżką bieżącego katalogu roboczego.

Jeśli wywołanie funkcji getCwd () zakończy się powodzeniem, zwraca wskaźnik do łańcucha ze ścieżką katalogu roboczego. Jeśli wystąpi błąd, wynik jest wskaźnikiem zerowym. W takim przypadku kod identyfikacji błędów jest automatycznie przechowywany w zmiennej globalnej Errno.

Zarówno deklaracja zmiennej errno, jak i definicje kodów błędów znajdują się w „errno.H ”nagłówek. W poniższym przykładzie zobaczymy specjalną sekcję, która wyjaśnia, jak wykryć i zidentyfikować błędy.

Funkcja getCwd () jest zdefiniowana w „unistd.H ”nagłówek. Aby go użyć, musimy go uwzględnić w „.plik C ”w następujący sposób:

#włączać

Jak zapytać o obecny katalog roboczy z funkcją getCwd () w języku c

W tym przykładzie wyjaśnimy, jak odzyskać bieżący katalog roboczy i wyświetlić go w konsoli poleceń.

Pierwszym krokiem do tego jest włączenie niezbędnych nagłówków. W tym przypadku są „unistd.h ”i„ stdio.H ”pliki. Następnie otwieramy funkcję main (), która zwraca pustą wartość zwracającą i w której deklarujemy ścieżkę tablicy ze 128 elementami typu char. W tej tablicy funkcja getCwd () przechowuje ciąg z katalogiem.

Po ogłoszeniu niezbędnych zmiennych wywołujemy funkcję getCwd (). Podajemy argument wejściowy „BUF” jako wskaźnik do ścieżki tablicy i rozmiar bufora jako rozmiar argumentu, w tym przypadku 128.

Następnie, używając funkcji printf (), drukujemy komunikat „Rzeczywisty katalog to:”, a następnie ścieżka katalogu zwracana przez funkcję getCwd (). Oto pełny kod tego przykładu:

#włączać
#włączać
void main ()

Char Path [128];
getCwd (ścieżka, 128);
printf ("\ n \ n Rzeczywisty katalog to: %s \ n", ścieżka);

Następnie widzimy obraz z kompilacją i wykonaniem tego kodu. W takim przypadku getCwd () zwraca bezwzględną ścieżkę katalogu domowego użytkownika w sesji:

Ten sam wskaźnik, który powraca getCwd () w argumencie „BUF”, zwraca następujący wynik:

wskaźnik do buff = getCwd (wskaźnik do buff, rozmiar);

Umożliwia to wywołanie funkcji getCwd () z argumentów wejściowych innej funkcji. Poniższy kod pokazuje wywołanie z argumentów wejściowych printf ():

#włączać
#włączać
void main ()

Char Path [128];
printf ("\ n \ n Rzeczywisty katalog to: %s \ n", getCwd (ścieżka, 128));

W takim przypadku printf () przenosi wskaźnik do ciągu zwracanego przez getCwd () i drukuje go do konsoli poleceń z tylko jednym wierszem kodu.

Poniższy obraz pokazuje, że ta metoda ma taki sam efekt jak program w poprzednim przykładzie:

Błędy podczas korzystania z funkcji getCwd (): Jak je wykryć i identyfikować

Jeśli wystąpi błąd podczas wywoływania funkcji getCwd (), w rezultacie zwraca wskaźnik zerowy. Najłatwiejszym sposobem wykrycia błędu jest użycie warunku „jeśli”, w którym warunek wejściowy jest określany przez wynik równy NULL. Poniżej znajduje się fragment kodu, który wykorzystuje tę metodę do wykrywania błędów:

if (getCwd (ścieżka, 128) == null)

printf („Wystąpił błąd w wywołaniu funkcji getCwd ().\N" );

Gdy wystąpi błąd, kod numeryczny, który go identyfikuje.H ”nagłówek.

Ten nagłówek definiuje również kody błędów i ich reprezentację numeryczną.

Możesz zobaczyć błędy, które może wygenerować funkcja getCwd (), ich reprezentacja numeryczna, która jest zwracana w zmiennej Errno, i krótki opis każdego z nich:

Definicja Wartość w errno Opis
Enoent 2 Brak takiego pliku lub katalogu.
EACCES 13 Zezwolenie odrzucone
Efault 14 Zły adres.
Einval 22 Błędny argument.
Enametoolong 36 Nazwa pliku lub ścieżka zbyt długo.

Najłatwiejszym sposobem zidentyfikowania błędu jest otwarcie warunkowego przełącznika, w którym warunkiem skoku jest zmienna globalna Errno, a każdy przypadek jest definicją błędu. Widzimy kod tej metody wykrywania:

if (getCwd (ścieżka, 128) == null)

przełącznik (errno)
Case einval:
printf („Nieprawidłowy argument.\N" );
przerwa;
Case efault:
printf („zły adres.\N" );
przerwa;
case enoent:
printf („Brak takiego pliku lub katalogu.\N" );
przerwa;

Zmienne i kody błędów są zdefiniowane w „Errno.H ”nagłówek. Aby ich użyć, musimy je uwzględnić w „.plik C ”w następujący sposób:

#włączać

Wniosek

W tym artykule z podpowiedzi Linuksa wyjaśniliśmy, jak korzystać z funkcji getCwd () do określenia bieżącego katalogu roboczego programu wywołującego.

Przyjrzeliśmy się sekcji teoretycznej o tej funkcji, jakie są jej argumenty wejściowe i wyjściowe oraz jakiego rodzaju dane używa. Następnie zastosowaliśmy to, czego nauczyliśmy się poprzez praktyczne przykłady z obrazami i fragmentami kodu, które pokazują, jak zadeklarować niezbędne zmienne i wywołać funkcję getCwd ().

Dołączyliśmy również specjalną sekcję, w której wymieniamy różne błędy, które ta funkcja może wygenerować, i wyjaśniliśmy, jak je wykryć.