Ako používať napísať systémový hovor v C

How Use Write System Call C



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.out

Vý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.