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 počas celej kariéry v programovaní v C potrebovali systémové volanie, či už sa zameriavate na výnimočnú produktivitu alebo určitý štýl funkcií, repozitár Glibc alebo iné štandardné knižnice nachádzajúce sa v populárnych distribúciách Linuxu postačia prevažnej väčšine vašich požiadavky. V tejto príručke vytvoríme koncept o volaní systému Write v jazyku C.
Syntax:
#zahrnúťssize_tpísať(int fd, const neplatné*buf, size_t count);
V tejto vyššie uvedenej syntaxi prvý riadok zobrazuje knižnicu systémových hovorov. V druhom riadku fd znamená deskriptor súboru, čo je skutočne číslo, ktoré určuje otvorený súbor procesu. Kľúčové slovo *buf znamená buffer. Obsahuje všetky údaje. Ďalej je počítať. Je to počet bajtov, ktoré sa majú zapísať do deskriptora súboru z vyrovnávacej pamäte.
Predpoklady inštalácie:
Ak chcete spustiť ľubovoľný kód jazyka C, musíte najskôr nainštalovať niektoré balíky v distribúcii Linux. Ak chcete vidieť ďalšie informácie o systémovom volaní na zápis, musíte si na to nainštalovať balík manpages-dev. Otvorte terminál pomocou klávesovej skratky Ctrl+Alt+T. Po jeho otvorení napíšte nasledujúci príkaz apt install a za ním kľúčové slovo manpages-dev, ktoré nainštaluje stránky.
$sudovýstižnýInštaláciamanpages-dev
Inštalácia manuálnych stránok bude nejaký čas 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 nižšie v shelle.
$muž 2 písať
Manuálna stránka výstupu pre príkaz write je uvedená nižšie. Môžete si o tom prečítať informácie. Manuál opustíte stlačením q.
Teraz je načase nainštalovať balík Gcc do vášho systému Linux tak, aby fungoval v jazyku C. Za týmto účelom otvorte shell a napíšte nasledujúci príkaz apt install, za ktorým zadajte kľúčové slovo gcc.
$sudovýstižnýInštalácia gcc
Medzitým vás môže počas inštalácie požiadať, aby ste túto akciu inštalácie potvrdili stlačením y pre pokračovanie a stlačením n ju zastavili. Klepnite teda na kláves 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ú zodpovedať obrázku nižšie.
Príklady:
Pozrime sa na niekoľko príkladov systémového volania na zápis v našej distribúcii Linuxu. Otvorte preto shell príkazového riadka a vytvorte v ňom nový C súbor s príponou dot c. Na rýchle vytvorenie a otvorenie musíte použiť nižšie uvedený príkaz nano. Dali sme mu názov ako nový.c.
$nanonový.c
Otvorí sa nižšie uvedené okno. Teraz musíte do tohto súboru napísať priložený kód. Do tohto kódu sme najskôr zahrnuli knižnicu unistd.h. Potom sme vytvorili hlavnú funkciu a v rámci tejto funkcie sme vytvorili systémové volanie zápisu. V tomto systémovom hovore 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 k nemu pridať čokoľvek. A posledný parameter zobrazuje počet údajov pre údaje uvedené v parametri vyrovnávacej pamäte. Ako sme uviedli 5 ako číslo počítania, zobrazí iba prvých 5 bajtov údajov vyrovnávacej pamäte a ignorované zostávajúce bajty. Tento kód uložte pomocou klávesovej skratky Ctrl+S a tento súbor ukončite príkazom Ctrl+X.
#zahrnúťInt main()
{Napíšte(1Aqsa Yasin5);}
Teraz v termináli vyskúšajte nižšie uvedený príkaz gcc na skompilovanie tohto novovytvoreného kódu s názvom súboru.
$gccnový.c
Pozrime sa na tento kód pomocou predvoleného súboru a.out vytvoreného za behu. Skúste teda príkaz a.out nižšie a skontrolujte výstup systémového volania write. Na výber súboru z aktuálneho adresára ho musíme použiť s ./.
$./a.outVýstup, ktorý vidíte, zobrazoval iba slovo Aqsa kvôli počtu 5.
Zmeňme trochu náš kód. Počet sme zmenili na 11, pretože v našich údajoch o vyrovnávacej pamäti Aqsa Yasin máme celkom 11 bajtov. Tentoraz teda výstup ukáže celé bajty reťazcových údajov Aqsa Yasin. Tento súbor uložte pomocou klávesov Ctrl+S a ukončite ho pomocou klávesovej skratky Ctrl+X.
Zostavme aktualizovaný kód pomocou novo nainštalovaného kompilátora gcc na distribúciu Linuxu. Skúste použiť rovnaký príkaz gcc spolu s názvom súboru ako new.c.
$gccnový.c
Teraz zobrazte výstup rovnakého kódu pomocou predchádzajúceho príkazu a.out, ako je uvedené nižšie. Výstup ukazuje celý reťazec Aqsa Yasin vyrovnávacej pamäte.
$./a.out
Pozrime sa, ako kód funguje, keď vezmeme početné číslo väčšie ako celkový počet bajtov, ktoré údaje vyrovnávacej pamäte obsahujú. Preto sme použili počet ako 30. Uložte a zatvorte súbor.
Skompilovajte rovnaký aktualizovaný súbor pomocou príkazu gcc ako nižšie.
$gccnový.c
Teraz spustite súbor pomocou príkazu a.out a na výstupe sa zobrazia údaje vyrovnávacej pamäte a tiež určitá hodnota odpadu, ako sú zobrazené na výstupe snímky nižšie. $ ./A.out
Môžete tiež skontrolovať celkový počet bajtov zapísaných do súboru pomocou nižšie uvedeného kódu v tom istom súbore.
Zostavte kód podľa inštrukcie gcc.
$gccnový.c
Výstup ukazuje celkový počet bajtov vrátane údajov vyrovnávacej pamäte a prerušenia riadka pomocou príkazu a.out.
$./a.out
Záver:
V tomto tutoriále sme rozpracovali koncept použitia systémového volania Write v jazyku C. Skúste všetky príklady na porozumenie myšlienke systémového volania write pomocou tohto článku.