Funkcja otwartego poz

Funkcja otwartego poz
Chociaż w C jest wiele bibliotek, biblioteka POSIX jest bardzo dobrze znana wśród programistów ze względu na szeroki zakres funkcji połączeń systemowych, zwłaszcza funkcja systemu wywołuje „pliki”. Biblioteka POSIX dla systemu operacyjnego Linux zapewnia różnorodne funkcje. Istnieje funkcja Open (), która jest celowo używana do otwarcia określonego pliku z systemu w jednym z tych wywołań POSIX. Wykorzystuje wiele opcji do tworzenia, otwierania, czytania, pisania i robienia wielu rzeczy w plikach Linux.

Przykład 1:
Spójrzmy na pierwszy przykład, aby użyć funkcji Posix Open (), aby po prostu utworzyć i otworzyć pliki w trybie tylko do odczytu. W tym celu użyj zapytania dotykowego w powładzie, aby utworzyć plik C. Można go zapisać w bieżącym folderze roboczym.

Otwórz swój nowo wygenerowany plik, i.mi. otwarty.c, w edytorze, aby dodać w nim trochę kodu, tak jak na prezentowanym obrazie. Rozpocznij kod przy użyciu standardowych nagłówków C, takich jak Stdio.H, fcntl.h i errno.h, które są celowo uwzględnione odpowiednio dla standardowego wejścia/wyjścia, użycia zgłoszenia i wyświetlanie błędów. Istnieje funkcja main () do wykonania wykonania. Tworzymy zmienną całkowitą „F”, która jest używana jako deskryptor pliku, aby uzyskać zwróconą wartość z wywołania funkcji „Open ()”. Funkcja Open () używa nazwy pliku tekstowego wraz z dwiema opcjami - opcją „O_rdonly” do odczytania już istniejącego pliku i opcji „O_Creat” do utworzenia pliku, jeśli nie istnieje.

Instrukcja printf () wyświetla zwróconą wartość za pomocą deskryptora „F”. Wartość „F” jest równa „-1”. Rzuca błąd, którego nie udało nam się otworzyć lub utworzyć plik wraz z komunikatem o błędzie za pomocą funkcji Perror (). W przeciwnym razie instrukcja printf () wyświetla komunikat sukcesu na naszym ekranie. Kod jest wypełniony za pomocą instrukcji return 0.

#włączać
#włączać
#włączać
int main ()
int f = otwarty ("nowy.txt ", o_rdonly | O_Creat);
printf („wartość deskryptora pliku = %d \ n”, f);
if (f == -1)
Perror („Nie udało się utworzyć/otworzyć pliku… \ n);
w przeciwnym razie
printf („plik utworzony pomyślnie!\N");
powrót 0;

Po pomyślnym zapisaniu kodu kompilujemy go z narzędziem wiersza poleceń „GCC”, takim jak kompilator C, który jest dostępny w systemie Linux. Napisz słowo kluczowe „GCC” z nazwą pliku „Otwórz.c ”i uruchom go. Kompilacja jest zamożna i próbujemy „./A.Zapytanie o uruchomienie skompilowanego kodu. Dane wyjściowe pokazuje wartość „F” wraz z komunikatem sukcesu, który wskazuje, że ostatecznie utworzyliśmy nowy plik tekstowy. Wyjście instrukcji „LS” pokazuje czerwony podświetlony „nowy.plik txt ”utworzony przez opcję„ O_Creat ”funkcji Open () w bieżącym folderze roboczym.

Użyjmy tego samego kodu, aby uzyskać błąd, jeśli funkcja Open () nie jest w stanie odczytać pliku, który nie istnieje w systemie. Korzystając z tej samej struktury kodu, aktualizujemy pierwszy wiersz kodu funkcji Main (. Tutaj usuwamy opcję „O_Creat”, aby utworzyć nowy plik przy użyciu wywołania funkcji Open () i używamy tylko opcji „O_rdonly”.

Ponadto zmieniamy nazwę pliku na „testuj.txt ”, który nie istnieje w naszym folderze działającym. Oznacza to, że funkcja Open () nie jest w stanie otworzyć pliku, a funkcja Perror () wyświetla odpowiedni komunikat o błędzie w konsoli. Zapiszmy ten zaktualizowany plik C.

#włączać
#włączać
#włączać
int main ()
int f = otwarty ("test.txt ", o_rdonly);
printf („wartość deskryptora pliku = %d \ n”, f);
if (f == -1)
Perror („Błąd: [nie udało się otworzyć pliku]:);
w przeciwnym razie
printf („plik został pomyślnie otwarty!\N");
powrót 0;

Uruchomienie pliku po wykonaniu wyrzuca błąd „brak takiego pliku lub katalogu”.

Przykład 2:
Możesz użyć wywołania funkcji Open (), aby odczytać dane ciągu z określonego pliku za pomocą tablic. Do tego potrzebujesz tylko „unistd.h ”i„ fcntl.Biblioteki H ”. Wykonanie kodu rozpoczyna się od podstawowej metody „main ()”, która deklaruje tablicę typu znaków „A” rozmiaru 30. Deskryptor pliku liczb całkowitych używa zwróconej wartości z wywołania funkcji Open (). Funkcja Open (), która jest tutaj używana, wyrzuca opcję „O_rdonly”, aby otworzyć ją w trybie tylko do odczytu. Funkcja Read () w następnym wierszu służy do przechowywania 12 znaków z „pliku.txt ”za pomocą deskryptora„ f ”i zapisz go do tablicy postaci„ A ”.

Jeśli funkcja Read () z powodzeniem odczytują dane z pliku, zwraca pewną wartość do zmiennej „N”. Wywołanie funkcyjne zapisu () używa zmiennej „N” do zapisywania danych na konsoli, która jest właśnie zapisana w tablicy „A”.

#włączać
#włączać
int main ()
Char A [30];
int f = otwarty ("plik.txt ", o_rdonly);
int n = odczyt (f, a, 12);
Napisz (1, a, n);

Teraz musimy utworzyć ten sam plik tekstowy „plik tekstowy.txt ”w tym samym folderze i dodaj do niego dane tekstowe, jak przedstawiono za pomocą instrukcji„ CAT ”Linux. Kompilujemy i wykonujemy nasze „Otwarte.plik C ”i uzyskaj pierwsze 12 znaków z„ pliku.txt ”są wyświetlane na skorupce.

Przykład 3:
Możesz użyć wywołania funkcji Open (), aby skopiować dane tekstowe z jednego pliku do drugiego z niewielką zmianą kodu. Odrzuciliśmy ten sam przykładowy fragment kodu i wprowadzamy pewne zmiany w kilku jego liniach. Rozmiar bufora znaków „A” jest aktualizowany do 50, a deskryptor F1 otwiera plik „Plik.txt ”w trybie„ tylko do odczytu ”za pomocą„ O_rdonly ”w funkcji Open (). Funkcja Read () używa deskryptora „F1” do odczytania 25 znaków z „pliku.plik txt ”i zapisz je do buforowania tablicy„ a ”. Zwrócona wartość sukcesu/awarii jest zapisywana na zmienną „N”.

Do utworzenia nowego pliku o nazwie nowy plik o nazwie nowy plik plik jest używany.txt ”w tym samym folderze za pomocą opcji„ 0_Creat ”w metodzie„ Otwórz ”i z trybem„ tylko zapisu ”(O_WRONLY) z wartością 0642 do zapisu. Wywołanie funkcyjne zapisu () używa wartości „N”, aby uzyskać dane z bufora znaków „A” i paruj je do drugiego pliku „źródło.txt ”za pomocą deskryptora„ F2 ”. Teraz uruchommy następujący kod, aby zobaczyć, co otrzymamy w wyjściu:

#włączać
#włączać
int main ()
Char A [50];
int f1 = otwarty ("plik.txt ", o_rdonly);
int n = odczyt (f1, a, 25);
int f2 = otwarty ("Źródło.txt ", O_Creat | O_Wronly, 0642)
Napisz (f2, a, n);

Teraz mamy „plik.txt ”i„ Otwórz.plik C ”w bieżącym folderze. Możesz zobaczyć dane w „pliku.tekst". W otwartym.C „Wykonanie pliku, źródło.Plik TXT jest generowany i 25 znaków z „pliku.plik txt ”jest kopiowany do„ źródła.plik txt ”również.

Wniosek

Ten przewodnik jest prosty, ale pełen przykładów C do wykorzystania i nauki wywołania funkcji POSIX „Open ()”. Korzystając ze wszystkich podanych przykładów, nigdy nie zawiedziesz podczas korzystania z plików w C.