Ako používať otvorené systémové volanie v C

How Use Open System Call C



Systémové volania sa používajú v distribúciách Linuxu na poskytnutie dverí v rámci operačného systému Linux a programov. Operačný systém Linux používa knižnicu Glibc na podporu systémových hovorov v nej pri použití jazyka C. Existuje tiež oveľa viac spôsobov, ako používať systémové hovory. V tejto príručke článku budeme diskutovať o otvorenom systémovom volaní v systéme Linux. Na rýchle otvorenie súboru uvedeného v ceste bolo použité systémové volanie Otvoriť. Dalo nám to vedieť o deskriptore súboru súboru vytvoreného používateľom. Na získanie praktického otvoreného systémového hovoru používame Ubuntu 20.04.

Nainštalujte si knižnice

Jazyk C vyžaduje, aby boli ako predpoklady nainštalované niektoré ďalšie balíky knižníc. Najprv musíte nainštalovať balík manpages-dev a skontrolovať informácie o systémových hovoroch. Otvorte terminál príkazového riadka v oblasti aktivít a vykonaním nižšie uvedených pokynov nainštalujte manuálové stránky.







$ sudo apt install manpages-dev



Výstup pre dokončenie inštalácie je uvedený nižšie.







Teraz skontrolujeme otvorené systémové volanie pomocou príkazu man, ako je uvedené nižšie.

$ muž2otvorené



Manuálna stránka výstupu pre systémové volanie Open bola zobrazená nižšie. Môžete vidieť ďalšie informácie, ktoré sa ho týkajú. Ukončite ho stlačením tlačidla q.

Vyššie uvedená syntax zobrazuje prvé tri riadky potrebných knižníc, ktoré je potrebné pridať pre systémové volania. Pre otvorené systémové volanie sú k dispozícii tri syntaxe. Prvá syntax zobrazuje názov cesty, čo je názov súboru, ktorý sa má otvoriť. Druhý parameter, príznaky, zobrazuje režim súboru, napr. Čítanie alebo zápis. Druhú syntax je možné použiť, ak súbor neexistuje. Režim parametrov sa používa na zobrazenie oprávnení v súbore.

Teraz je čas nainštalovať kompilátor GCC na ladenie kódu C v distribúcii Ubuntu 20.04 Linux. Za týmto účelom vykonajte nižšie uvedené pokyny v shelle.

$ sudo apt install gcc

Ak chcete pokračovať v inštalácii kompilátora GCC, musíte klepnúť na Y. V opačnom prípade ukončite inštaláciu kliknutím na tlačidlo n. Pokračujte teda stlačením tlačidla y a stlačením klávesu Enter.

Výstup pre dokončenie je uvedený nižšie.

Príklad 01

Pozrime sa na veľmi jednoduchý príklad otvoreného systémového hovoru. Najprv otvorte príkazový shell a vytvorte nový textový súbor test.txt pomocou jednoduchého dotykového príkazu nasledovne:

$dotýkať satest.txt

Ručne do nej pridajte niektoré údaje. Údaje môžete vidieť v súbore pomocou nižšie uvedeného príkazu cat.

$kattest.txt

Teraz vytvoríme nový súbor C pomocou príkazu nano v shelle, ako je to znázornené nižšie.

$nanonový.c

Otvorí sa nižšie uvedený súbor GNU nano. Musíte doň napísať nižšie uvedený kód jazyka C. Môžete vidieť, že sme pridali potrebné balíky knižníc, aby bol kód C správne vykonaný. Potom sme definovali hlavnú funkciu, ktorá bude fungovať na otvorenom systémovom volaní. Deklarovali sme dve celočíselné premenné. Premenná n sa používa na počítanie hodnôt vyrovnávacej pamäte a fd sa používa na popis súboru. Pole vyrovnávacej pamäte typu znakov sme deklarovali ako buf s veľkosťou 50. Otvorené systémové volanie bolo použité na čítanie obsahu zo súboru test.txt a jeho vrátenie do deskriptora súboru. O_RDONLY sa používa na účely čítania. Nasledujúci riadok ukazuje prečítané systémové volanie na zhromaždenie 10 bajtov z vyrovnávacej pamäte a vrátenie do celého čísla n. Príkaz write bol tiež použitý na zápis obsahu alebo údajov vyrovnávacej pamäte do deskriptora súboru, ktorý je výstupnou obrazovkou V našom prípade práve teraz. Tento súbor uložte pomocou Ctrl+S a zatvorte ho príkazom Ctrl+X.

#zahrnúť
#zahrnúť
#zahrnúť
#zahrnúť

intHlavná()
{
intn,fd;
charbuf[päťdesiat];
fd=otvorené(test.TXT,O_RDONLY);
n=čítať(fd,buf, 10);
písať(1 ,buf, 10);

Poďme najskôr skompilovať kód C pre otvorené systémové volanie pomocou nižšie uvedeného príkazu gcc.

$gccnový.c

Teraz je načase skontrolovať výstup pre kód C pre otvorené systémové volanie. V shelle použijeme príkaz a.out nižšie. Výstup zobrazí 10 bajtov z obsahu súboru test.txt.

$./do.von

Zoberme si ďalší príklad na zapísanie obsahu jedného súboru do iného súboru pomocou systémového volania Open. Ak chcete vytvoriť nový súbor C pomocou príkazu nano, ako je uvedené nižšie.

$ nano nové.c

Zoberte teda ten istý kód s malou zmenou v ňom. V kóde sme definovali ďalší deskriptor súborov ako fd1. Všetok kód je rovnaký, okrem jedného dodatočného riadka. Druhý posledný riadok kódu použil otvorené systémové volanie na vytvorenie nového súboru s názvom target pomocou O_CREAT a režimu, iba na zápis ako O_WRONLY. 0642 zobrazuje oprávnenia priradené tomuto súboru. A súbor bol vrátený do nového deskriptora súboru. Nasledujúci riadok ukázal príkaz na zapísanie bajtov obsahu do vyrovnávacej pamäte podľa deskriptora súboru. Uložte súbor a zatvorte ho.

Na ladenie súboru v jazyku C spustite príkaz gcc compile.

$ gcc nové.c

Ak chcete zobraziť výstup kódu C, vyskúšajte inštrukciu a.out v shelle, ako je uvedené nižšie. Neexistuje žiadny výstup, pretože výstup bol presmerovaný na novo vytvorený cieľ súboru.

$./do.von

Skontrolujme údaje cieľového súboru pomocou príkazu cat. Výstup ukazuje, že súbor má 20 bajtov.

$ mačací cieľ

Záver

Vo vyššie uvedenom návode sme vám vysvetlili, aby ste používali otvorené systémové volanie v jazyku C pomocou kompilátora gcc. Pomocou rôznych príkladov vysvetlených v tejto príručke vás zavedie k implementácii požadovaného programu.