Systémové volání slouží jako primární brána mezi programy a jádrem operačního systému Linux. Ačkoli byste téměř jistě potřebovali mít systémové volání po celou dobu své programátorské kariéry v C, ať už se zaměřujete na výjimečnou produktivitu nebo určitý styl funkcí, úložiště Glibc nebo jiné standardní knihovny nalezené v populárních distribucích Linuxu budou pro drtivou většinu vašich požadavky. V této příručce vytvoříme koncept volání systému Write v jazyce C.
Syntax:
#zahrnoutssize_t write (int fd, const void * buf, size_t count);
V této syntaxi výše ukazuje první řádek knihovnu systémových volání. Na druhém řádku znamená fd deskriptor souboru, což je skutečně číslo, které určuje otevřený soubor procesu. Klíčové slovo * buf znamená buffer. To obsahuje veškerá data v něm. Další je počet. Je to počet bajtů, které mají být zapsány do deskriptoru souboru z vyrovnávací paměti.
Předpoklady instalace:
Chcete-li spustit libovolný kód jazyka C, musíte nejprve nainstalovat některé balíčky v distribuci Linuxu. Chcete-li zobrazit další informace týkající se systémového volání write, musíte si nainstalovat balíček manpages-dev. Terminál otevřete pomocí klávesové zkratky Ctrl + Alt + T. Po otevření napište níže uvedený příkaz apt install následovaný klíčovým slovem manpages-dev pro instalaci manpages.
$ sudo apt install manpages-dev
Instalace stránek bude nějakou dobu trvat. Počkejte, až se to dokončí.
Po instalaci můžete vidět další informace o systémovém volání „write“ pomocí níže uvedeného příkazu man v shellu.
$ man 2 write
Níže je uvedena výstupní stránka manuálu pro příkaz „write“. Můžete si přečíst informace o tom. Stisknutím q opustíte příručku.
Nyní je čas nainstalovat do systému Linux balíček „Gcc“, abyste mohli pracovat v jazyce C. Za tímto účelem otevřete shell a napište níže uvedený příkaz apt install následovaný klíčovým slovem „gcc“.
$ sudo apt nainstalovat gcc
Během instalace vás může požádat o potvrzení této akce instalace stisknutím „y“ pro pokračování a „n“ pro její zastavení. Klepněte tedy na klávesu „y“ a stiskněte klávesu Enter.
Nainstaluje se do vašeho systému během několika minut a poslední řádky výstupu budou zobrazeny na následujícím snímku.
Příklady:
Uveďme několik příkladů systémového volání „write“ v naší distribuci Linuxu. Proto otevřete prostředí příkazového řádku a vytvořte v něm nový soubor C s příponou tečka „c“. Chcete-li jej rychle vytvořit a otevřít, musíte použít níže uvedený příkaz nano. Pojmenovali jsme jej jako „nový.C".
$ nano nové.C
Otevře se níže uvedené okno. Nyní musíte do tohoto souboru napsat připojený kód. V tomto kódu jsme zahrnuli unistd.h knihovna jako první. Poté jsme vytvořili hlavní funkci a v rámci této funkce jsme vytvořili systémové volání „write“. V tomto systémovém volání je úplně prvním parametrem deskriptor souboru. V tomto případě celé číslo 1 představuje obrazovku výstupního zařízení a je pevné. Náš výstup se tedy zobrazí na obrazovce. Druhý parametr zobrazuje data vyrovnávací paměti. Můžete k tomu přidat cokoli. A poslední parametr zobrazuje počet pro data uvedená v parametru vyrovnávací paměti. Jak jsme uvedli 5 jako číslo, zobrazí pouze prvních 5 bajtů dat vyrovnávací paměti a ignoruje zbývající bajty. Uložte tento kód pomocí klávesové zkratky Ctrl + S a ukončete tento soubor pomocí příkazu Ctrl + X.
#zahrnoutInt main ()
Write (1, „Aqsa Yasin“, 5);
Nyní v terminálu zkuste pomocí níže uvedeného příkazu gcc zkompilovat tento nově vytvořený kód s názvem souboru.
$ gcc nové.C
Podívejme se na tento kód pomocí výchozího a.out soubor vytvořený za běhu. Zkuste tedy níže uvedené a.out příkaz ke kontrole výstupu systémového volání „write“. Musíme to použít s „./ ”Pro výběr souboru z aktuálního adresáře.
$ ./A.venVýstup, který vidíte, zobrazil pouze slovo „Aqsa“ z důvodu počtu 5.
Pojďme trochu změnit náš kód. Změnili jsme počet na 11, protože máme celkem 11 bajtů v našich datech vyrovnávací paměti „Aqsa Yasin“. Tentokrát tedy výstup zobrazí celé bajty řetězcových dat „Aqsa Yasin“. Uložte tento soubor pomocí Ctrl + S a ukončete pomocí klávesové zkratky Ctrl + X.
Zkompilujme aktualizovaný kód pomocí nově nainstalovaného kompilátoru gcc pro distribuci Linuxu. Vyzkoušejte stejný příkaz gcc spolu s názvem souboru jako „nový.C".
$ gcc nové.C
Nyní zobrazte výstup stejného kódu pomocí předchozího „a.out ”, jak je uvedeno níže. Výstup zobrazuje celý řetězec „Aqsa Yasin“ vyrovnávací paměti.
$ ./A.ven
Podívejme se, jak kód funguje, když vezmeme počet větší než celkový počet bajtů, která obsahují data vyrovnávací paměti. Počítali jsme tedy jako 30. Uložte a zavřete soubor.
Zkompilujte stejný aktualizovaný soubor pomocí příkazu gcc, jak je uvedeno níže.
$ gcc nové.C
Nyní proveďte soubor pomocí a.Příkaz out a výstup zobrazí data vyrovnávací paměti a také nějakou hodnotu smetí, jak je zobrazeno ve výstupu snímku níže.$ ./A.ven
Můžete také zkontrolovat celkový počet bajtů zapsaných do souboru pomocí níže uvedeného kódu ve stejném souboru.
Zkompilujte kód podle instrukce gcc.
$ gcc nové.C
Výstup ukazuje celkový počet bajtů, včetně dat vyrovnávací paměti a přerušení řádku, pomocí a.příkaz ven.
$ ./A.ven
Závěr:
V tomto tutoriálu jsme zpracovali koncept použití systémového volání „Write“ v jazyce C. Vyzkoušejte všechny příklady, abyste pochopili myšlenku systémového volání „write“ pomocí tohoto článku.