C programozás

Írási rendszerhívás használata a C-ben

Írási rendszerhívás használata a C-ben

A rendszerhívás az elsődleges átjáró a programok és a Linux operációs rendszer kernelje között. Bár szinte biztos, hogy C-programozási karrierje során rendszermeghívásra van szükség, függetlenül attól, hogy kivételes termelékenységre vagy egy bizonyos stílusú szolgáltatásra törekszik-e, a Glibc adattár vagy más, a népszerű Linux disztribúciókban található más szabványos könyvtárak elegendőek követelményeknek. Ebben az útmutatóban létrehozunk egy koncepciót az Írási rendszer hívásról C nyelven.

Szintaxis:

#include
ssize_t write (int fd, const void * buf, size_t count);

Ebben a fenti szintaxisban az első sor a rendszerhívások könyvtárát mutatja. A második sorban az fd egy fájlleírót jelent, amely valóban egy szám, amely meghatározza a folyamat nyitott fájlját. A * buf kulcsszó puffert jelent. Ez minden adatot tartalmaz. A következő a gróf. Ez a pufferből fájlleíróba írandó bájtok száma.

Telepítési előfeltételek:

Bármely C nyelvi kód futtatásához először telepítenie kell néhány csomagot a Linux disztribúcióban. Ha további információkat szeretne látni az írási rendszerhívással kapcsolatban, ehhez telepítenie kell a manpages-dev csomagot. A terminál megnyitása a Ctrl + Alt + T gyorsbillentyűkkel. Megnyitás után írja be az alábbi apt install parancsot, majd a manpages-dev kulcsszót a manpages telepítéséhez.

$ sudo apt install manpages-dev

A manpages telepítése egy kis időt vesz igénybe. Várja meg, amíg elkészül.

A telepítés után a héjban található alábbi man paranccsal láthatja a további információkat az „írási” rendszerhívásról.

$ man 2 írjon

Az „write” parancs kimeneti man oldala az alábbiakban látható. Elolvashatja a róla szóló információkat. A kézikönyvből való kilépéshez nyomja meg a q gombot.

Itt az ideje telepíteni a „Gcc” csomagot a Linux rendszerébe, hogy a C nyelven működjön. Ehhez nyissa meg a héjat, és írja be az alábbi apt install parancsot, majd a „gcc” kulcsszót.

$ sudo apt install gcc

Eközben a telepítés során megkérheti Önt, hogy erősítse meg a telepítés ezen műveletét az „y” megnyomásával a folytatáshoz és az „n” megnyomásával a leállításához. Tehát érintse meg az „y” gombot, és nyomja meg az Enter billentyűt.

Néhány percen belül települ a rendszerbe, és a kimenet utolsó sorai az alábbi pillanatképen láthatóak lesznek.

Példák:

Nézzünk néhány példát egy „írási” rendszerhívásra a Linux disztribúciónkban. Ezért nyissa meg a parancssori héjat, és hozzon létre egy új C fájlt a „c” pont kiterjesztéssel. Az alábbi nano paranccsal kell gyorsan létrehozni és megnyitni. Nevet adtunk neki: „új.c ”.

$ nano új.c

Az alábbi ablak megnyílik. Most be kell írnia a mellékelt kódot ebbe a fájlba. Ebben a kódban felvettünk egy unistd-t.h könyvtár először. Ezután létrehoztuk a fő funkciót, és ezen a függvényen belül létrehoztunk egy „írási” rendszerhívást. Ebben a rendszerhívásban a legelső paraméter a fájlleíró. Ebben az esetben az 1 egész jelöli a kimeneti eszköz képernyőjét, és ez fix. Tehát a kimenetünk megjelenik a képernyőn. A második paraméter a pufferadatokat mutatja. Bármit hozzáadhat hozzá. Az utolsó paraméter pedig a puffer paraméterben megadott adatok számát mutatja. Mivel 5-öt említettünk számlálási számként, csak a pufferadatok első 5 bájtját fogja megjeleníteni, és figyelmen kívül hagyja a megmaradt bájtokat. Mentse el ezt a kódot a Ctrl + S gyorsbillentyűvel, és lépjen ki a fájlból a Ctrl + X paranccsal.

#include
Int main ()
Írás (1, „Aqsa Yasin”, 5);

Most a terminálban próbálkozzon az alábbi gcc paranccsal, hogy lefordítsa ezt az újonnan létrehozott kódot egy fájlnévvel.

$ gcc new.c

Nézzük meg ezt a kódot az alapértelmezett a használatával.futás közben létrehozott fájl. Tehát próbálja ki az alábbiakat a.out parancs az „írási” rendszerhívás kimenetének ellenőrzésére. A „./ ”A fájl kiválasztásához az aktuális könyvtárból.

$ ./ a.ki

A kimenet, amelyet láthat, csak az „Aqsa” szót jelenítette meg az 5. számú szám miatt.

Változtassunk egy kicsit a kódunkon. Megváltoztattuk a számlálási számot 11-re, mert az „Aqsa Yasin” pufferadatokban összesen 11 bájt van. Tehát ezúttal a kimenet az „Aqsa Yasin” karakterláncadatok teljes bájtját mutatja. Mentse el ezt a fájlt a Ctrl + S billentyűkombinációval, és lépjen ki a Ctrl + X parancsikon segítségével.

Fordítsuk le a frissített kódot az újonnan telepített gcc fordító segítségével a Linux terjesztéshez. Próbálja ki ugyanazt a gcc parancsot egy fájl nevével együtt, mint „új”.c ”.

$ gcc new.c

Jelenítse meg ugyanazon kód kimenetét az előző „a.out ”parancs az alábbiak szerint. A kimenet a puffer teljes „Aqsa Yasin” karakterláncát mutatja.

$ ./ a.ki

Lássuk, hogyan működik a kód, amikor a pufferadatok által tartalmazott bájtok összes számánál nagyobb számot veszünk. Tehát a számlálást 30-nak használtuk. Mentse és zárja be a fájlt.

Fordítsa le ugyanazt a frissített fájlt a gcc paranccsal, mint az alábbiakban.

$ gcc new.c

Most hajtsa végre a fájlt az a használatával.out parancsot, és a kimenet megmutatja a pufferadatokat, valamint néhány szemét értéket, amint az az alábbi pillanatkép kimenetén látható.$ ./ a.ki

A fájlba írt bájtok teljes számát ellenőrizheti az alábbi kód használatával ugyanabban a fájlban.

Fordítsa le a kódot gcc utasítással.

$ gcc new.c

A kimenet a bájtok teljes számát mutatja, beleértve a pufferadatokat és a sortörést, az a használatával.ki parancs.

$ ./ a.ki

Következtetés:

Ebben az oktatóanyagban kidolgoztuk az „Írjon” rendszerhívás C-ben történő használatának koncepcióját. Próbálja ki az összes példát az „írási” rendszerhívás ötletének megértéséhez a cikk segítségével.

Hasznos eszközök Linux játékosok számára
Ha szeretsz Linuxon játszani, akkor valószínű, hogy olyan alkalmazásokat és segédprogramokat használtál, mint a Wine, a Lutris és az OBS Studio a játé...
HD Remastered Games for Linux, amelyeknek soha nem volt korábban Linux kiadásuk
Számos játékfejlesztő és kiadó a régi játékok HD remasterjével áll elő a franchise élettartamának meghosszabbítása érdekében. Kérjük, hogy a rajongók ...
Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...