C Programování

Jak používat systémová volání Write v C

Jak používat systémová volání Write v C

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:

#zahrnout
ssize_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.

#zahrnout
Int 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.ven

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

Hry Jak používat AutoKey k automatizaci linuxových her
Jak používat AutoKey k automatizaci linuxových her
AutoKey je nástroj pro automatizaci stolních počítačů pro systémy Linux a X11, programovaný v programech Python 3, GTK a Qt. Pomocí jeho funkcí skript...
Hry Jak zobrazit počítadlo FPS v linuxových hrách
Jak zobrazit počítadlo FPS v linuxových hrách
Hraní na Linuxu získalo velký tlak, když společnost Valve v roce 2012 oznámila podporu systému Linux pro klienta Steam a jejich hry. Od té doby se mno...
Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...