Systémové volanie slúži ako primárna brána medzi programami a jadrom operačného systému Linux. Aj keď by ste takmer určite potrebovali mať systémové volanie počas celej svojej programátorskej kariéry v C, či už sa zameriavate na výnimočnú produktivitu alebo určitý štýl funkcií, úložisko Glibc alebo iné štandardné knižnice nájdené v populárnych distribúciách systému Linux budú stačiť pre veľkú väčšinu vašich požiadavky. V tejto príručke vytvoríme koncepciu volania systému Write v jazyku C.
Syntax:
#includessize_t write (int fd, const void * buf, size_t count);
V tejto syntaxi vyššie ukazuje prvý riadok knižnicu pre systémové volania. Na druhom riadku znamená fd deskriptor súboru, čo je skutočne číslo, ktoré určuje otvorený súbor procesu. Kľúčové slovo * buf je skratka pre buffer. Obsahuje akékoľvek údaje. Ďalej je počet. Je to počet bajtov, ktoré sa majú zapísať do deskriptora súboru z medzipamäte.
Podmienky inštalácie:
Ak chcete spustiť akýkoľvek kód v jazyku C, musíte si najskôr nainštalovať niektoré balíky v distribúcii Linuxu. Ak chcete vidieť ďalšie informácie týkajúce sa systémového volania zápisu, musíte si nainštalovať balíček manpages-dev. Terminál otvoríte pomocou klávesovej skratky Ctrl + Alt + T. Po otvorení napíšte nasledujúci príkaz apt install a za ním kľúčové slovo manpages-dev na inštaláciu manpages.
$ sudo apt install manpages-dev
Inštalácia manuálových stránok bude chvíľu trvať. Počkajte, kým sa dokončí.
Po inštalácii môžete vidieť ďalšie informácie o systémovom volaní „write“ pomocou príkazu man v shelli.
$ man 2 napis
Nasleduje výstupná manuálna stránka pre príkaz „write“. Môžete si prečítať informácie o ňom. Stlačením q manuál opustíte.
Teraz je čas nainštalovať si balík „Gcc“ do systému Linux, aby ste mohli pracovať v jazyku C. Za týmto účelom otvorte shell a napíšte nasledujúci príkaz apt install nasledovaný kľúčovým slovom „gcc“.
$ sudo apt nainštalovať gcc
Medzitým vás môže počas inštalácie požiadať o potvrdenie tejto akcie inštalácie stlačením „y“, aby ste pokračovali, a „n“, aby ste ju zastavili. Takže klepnite na klávesu „y“ a stlačte kláves Enter.
Nainštaluje sa do vášho systému do niekoľkých minút a posledné riadky výstupu budú zobrazené na nasledujúcej snímke.
Príklady:
Poďme si uviesť niekoľko príkladov systémového volania „write“ v našej distribúcii Linuxu. Preto otvorte shell príkazového riadku a vytvorte v ňom nový súbor C s príponou „c“. Nižšie uvedený príkaz nano musíte použiť na rýchle vytvorenie a otvorenie. Dali sme mu názov ako „nový“.c ”.
$ nano nové.c
Otvorí sa okno dole. Teraz musíte do tohto súboru napísať pripojený kód. V tomto kóde sme zahrnuli unistd.h najskôr knižnica. Potom sme vytvorili hlavnú funkciu a v rámci tejto funkcie sme vytvorili „zápisové“ systémové volanie. V tomto systémovom volaní je úplne prvým parametrom deskriptor súboru. V tomto prípade celé číslo 1 predstavuje obrazovku výstupného zariadenia a je pevné. Náš výstup sa teda zobrazí na obrazovke. Druhý parameter zobrazuje údaje vyrovnávacej pamäte. Môžete doň pridať čokoľvek. A posledný parameter zobrazuje početné číslo pre údaje uvedené v parametri medzipamäte. Ako sme už spomenuli 5 ako počet, bude zobrazovať iba prvých 5 bajtov dát medzipamäte a ignorovať zostávajúce bajty. Uložte tento kód pomocou klávesovej skratky Ctrl + S a ukončite tento súbor pomocou príkazu Ctrl + X.
#includeInt main ()
Write (1, „Aqsa Yasin“, 5);
Teraz v termináli vyskúšajte príkaz gcc uvedený nižšie, aby ste zostavili tento novovytvorený kód s názvom súboru.
$ gcc nové.c
Pozrime sa na tento kód pomocou predvoleného a.out súbor vytvorený za behu. Skúste teda nižšie uvedené a.príkaz na kontrolu výstupu systémového volania „write“. Musíme to použiť s „./ ”, Aby ste vybrali súbor z aktuálneho adresára.
$ ./ a.vonNa výstupe, ktorý vidíte, sa zobrazilo iba slovo „Aqsa“ kvôli počtu 5.
Poďme trochu zmeniť náš kód. Zmenili sme počet na 11, pretože v našich údajoch medzipamäte „Aqsa Yasin“ máme celkom 11 bajtov. Tentokrát teda výstup zobrazí celé bajty reťazcových údajov „Aqsa Yasin“. Uložte tento súbor pomocou Ctrl + S a ukončite ho pomocou klávesovej skratky Ctrl + X.
Zostavme aktualizovaný kód pomocou novo nainštalovaného kompilátora gcc pre distribúciu Linuxu. Vyskúšajte rovnaký príkaz gcc spolu s názvom súboru ako „nový.c ”.
$ gcc nové.c
Teraz zobrazte výstup rovnakého kódu pomocou predchádzajúceho „a.ako je uvedené nižšie. Výstup zobrazuje celý reťazec „Aqsa Yasin“ medzipamäte.
$ ./ a.von
Pozrime sa, ako funguje kód, keď zoberieme početné číslo väčšie ako je celkový počet bajtov, ktoré obsahujú údaje vyrovnávacej pamäte. Počítali sme teda ako 30. Uložte a zatvorte súbor.
Zostavte ten istý aktualizovaný súbor pomocou príkazu gcc, ako je uvedené nižšie.
$ gcc nové.c
Teraz vykonajte súbor pomocou a.out a výstup zobrazí dáta medzipamäte, ako aj niektoré hodnoty odpadu, ako sú zobrazené na výstupe snímky nižšie.$ ./ a.von
Celkový počet bajtov zapísaných do súboru môžete skontrolovať aj pomocou nižšie uvedeného kódu v rovnakom súbore.
Zostavte kód podľa pokynu gcc.
$ gcc nové.c
Výstup zobrazuje celkový počet bajtov vrátane údajov vyrovnávacej pamäte a prerušenia riadku pomocou a.príkaz von.
$ ./ a.von
Záver:
V tomto tutoriáli sme vypracovali koncept použitia systémového volania „Write“ v jazyku C. Vyskúšajte všetky príklady, aby ste pochopili myšlienku systémového volania „write“ pomocou tohto článku.