Errno w c

Errno w c
C Language nie zezwala bezpośrednio na zarządzanie błędami, ale umożliwia dostęp na mniejszym poziomie poprzez wartości zwrotne. W przypadku niedokładności większość funkcji C, a może nawet Linux wywołuje -1 lub pustkę i ustawia kod błędu Errno. Jest to uniwersalna stała, która pokazuje, kiedy połączenie funkcyjne się nie powiodło. W pliku nagłówka znajdziesz listę różnych kodów błędów. W rezultacie programista C może zbadać dostarczone wartości i, na podstawie nich, podjąć niezbędne środki. Wygląda na to, że w programie nie ma problemów, jeśli wynik to 0. W ramach tego artykułu będziemy omawiać użycie zmiennej „errno”, aby uzyskać kody błędów i komunikaty w naszym środowisku Linux (i.mi., Ubuntu 20.0.4 System.) Zacznijmy od otwarcia końcowej powłoki w Ubuntu 20.04 system operacyjny Linux i instalowanie kompilatora GCC C.

Przed przejściem w kierunku tworzenia kodu C potrzebujemy pliku C w naszym systemie Linux. W ten sposób używamy instrukcji dotyku, aby ją utworzyć. Ten plik musi zawierać rozszerzenie „c” na jego końcu. Jak możesz się dowiedzieć, zbudowaliśmy plik „Errno.C". Polecenie listy zostało użyte do wyświetlania wszystkich plików i folderów naszego bieżącego katalogu roboczego w Linux. Nowo wykonany plik C „errno.C ”jest również wymieniony tutaj. Aby utworzyć kod C w pliku, musimy go otworzyć w jakimś edytorze, takim jak edytor tekstu, edytor vim lub edytor GNU. Tak więc otwieraliśmy go w edytorze GNU Nano przy użyciu polecenia „Nano” w skorupce. Ten plik zostanie otwarty w edytorze podobnym do terminalu.

Przykład 01

Zacznijmy od początkowego przykładu tego artykułu. Powiedzmy, że chcesz otworzyć i odczytać dane z określonego pliku tekstowego przechodzącego w tym samym bieżącym katalogu za pomocą zgłoszenia w kodzie C. W tym celu musimy użyć standardowej biblioteki wyjściowej wejściowej C w naszym kodzie. Uwzględniliśmy to na linii początkowej, wykorzystując słowo kluczowe „#include”.

Następnie musimy użyć „errno.H ”nagłówek w tym kodzie C, abyśmy mogli użyć wbudowanej zmiennej„ errno ”, aby uzyskać kod błędu i komunikat. Główne wykonanie zostanie rozpoczęte od funkcji „Main ()” programu C. W ramach tego głównego programu używamy zmiennej „Plik” do zainicjowania deskryptora pliku „F” typu wskaźnika. Ten deskryptor pliku został użyty do otwarcia pliku „nowy.txt ”w formacie tylko do odczytu przy użyciu funkcji„ fopen ”składania w c. Instrukcja IF-ELSE jest tutaj, aby sprawdzić, czy plik jest pomyślnie otwarty, czy nie. Część „jeśli” instrukcji sprawdzi, czy zwrócony wynik deskryptora pliku jest równy 0, czy nie. Jeśli 0, oznacza to, że plik brakuje lub nie został pomyślnie otwarty. Zatem instrukcja PrintF będzie używać zmiennej „errno” do wyświetlenia kodu błędu.

Z drugiej strony część „else” zostanie wykorzystana, gdy warunek nie spełnia wartości deskryptora pliku innej niż. Instrukcja PrintF wyświetli się, że otwarcie się powiodło.

Skompilowaliśmy ten kod z kompilatorem „GCC”, a następnie wykonaliśmy go za pomocą „./A.Out ”Instrukcja. Niniejsze wykonanie kodu zwraca kod błędu numer 2, w którym nie znaleziono pliku.

Aby usunąć ten błąd, musimy utworzyć nowy plik tekstowy z instrukcją „dotknij” i dodać do niego kilka danych z instrukcją „echo”, jak pokazano. Instrukcja „CAT” pokazuje, że plik zawiera nowo dodane dane tekstowe.

Teraz, kiedy kompilujesz i uruchamiasz ten sam kod w powłoce, wykona część „else” i wyświetli komunikat „udany” (i.mi., Plik został znaleziony teraz.)

Jeśli chcesz wyświetlić komunikat o błędzie wraz z jego kodem błędu, musisz użyć funkcji „Strerror” w programie. W tym celu musisz użyć „ciągu.H ”nagłówka również w kodzie. Dodaliśmy więc nagłówek i zaktualizowaliśmy komponent „If” instrukcji „IF-ELSE”. Wywołanie funkcyjne strerror () pozwało „errno”, aby uzyskać komunikat o błędzie według jego kodu błędu.

Kiedy brakuje pliku, zostaniesz wyświetlony z komunikatem o błędzie „Brak takiego pliku lub katalogu” w powładzie, jak pokazano.

Przykład 02

Sprawdźmy numer błędu dla innego przykładu błędu. Korzystamy ze standardowych bibliotek w programie, a funkcja main () zawiera inicjalizację zmiennej „val” i wywołanie funkcji do funkcji „sprawdź”, przekazując ją zmienną „val”. Funkcja Check () byłaby używa instrukcji „IF-ELSE”, aby sprawdzić, czy wartość „VAL” wynosi zero, czy nie, a zatem druga wartość może być przez nią podzielna, czy nie. Ponieważ wartość „val” wynosi 7, może być podzielna przez 8. Tak więc część funkcji „else” zostanie wykonana w celu obliczenia wyniku podziału i wyświetlania go na powłoce.

Po kompilacji i wykonaniu stwierdziliśmy, że podział jest możliwy. Część else obliczyła i wykazała wartość podziału między 89 a wartością „7” dla zmiennej „Val”.

Zaktualizujmy ponownie kod i dodajmy 0 jako wartość do zmiennej „VAL” w funkcji Main (), aby odwrócić wyniki. Zaktualizowaliśmy więc wartość „VAL” do 0, jak wskazano na poniższym obrazku. Pozostały kod pozostał nietknięty.

Po uruchomieniu tego zaktualizowanego kodu mamy kod błędu 0 i jego komunikat o błędzie.

Wniosek

Chodzi o użycie zmiennej „errno” w artykule, aby uzyskać kody błędów różnych wyjątków za pomocą „errno.H ”nagłówek. Omówiliśmy również użycie funkcji „strerror” do wyświetlania komunikatu o błędzie wraz z numerem kodu. W tym przewodniku włączyliśmy dwa instancje, aby lepiej wyjaśnić ideę Errno.