C Programování

Jak používat otevřené systémové volání v C

Jak používat otevřené systémové volání v C

Systémová volání se používají v distribucích Linuxu, aby poskytla bránu v rámci operačního systému Linux a programů. Operační systém Linux používá knihovnu Glibc k podpoře systémových volání v něm při používání jazyka C. Existuje také mnohem více způsobů, jak používat systémová volání. V této příručce k článku budeme diskutovat o otevřeném systémovém volání v systému Linux. Systémové volání „Otevřít“ bylo použito k rychlému otevření souboru uvedeného v cestě. Dali nám vědět o deskriptoru souboru vytvořeného uživatelem. Používáme Ubuntu 20.04, abyste získali nějaké praktické „otevřené“ systémové volání.

Nainstalujte knihovny

Jazyk C vyžaduje, aby byly nainstalovány některé další balíčky knihoven. Nejprve musíte nainstalovat balíček manpages-dev, abyste zkontrolovali informace týkající se systémových volání. Otevřete terminál příkazového řádku z oblasti aktivity a proveďte níže uvedené pokyny k instalaci stránek.

$ sudo apt install manpages-dev

Výstup pro dokončení instalace je uveden níže.

Nyní zkontrolujeme otevřené systémové volání pomocí příkazu „man“, jak je uvedeno níže.

$ man 2 otevřeno

Níže je uvedena výstupní stránka manuálu pro systémové volání „Otevřít“. Můžete zobrazit další informace týkající se této záležitosti. Ukončete jej stisknutím tlačítka „q“.

Výše uvedená syntaxe ukazuje první tři řádky nezbytných knihoven, které mají být přidány pro systémová volání. Pro volání otevřeného systému jsou k dispozici tři syntaxe. První syntaxe ukazuje „cestu“, což je název souboru, který se má otevřít. Druhý parametr „příznaky“ zobrazuje režim souboru, např.G., číst nebo psát. Druhou syntaxi lze použít, pokud soubor neexistuje. Režim parametrů se používá k zobrazení oprávnění k souboru.

Nyní je čas nainstalovat kompilátor GCC pro ladění kódu C v Ubuntu 20.04 Linuxová distribuce. K tomu proveďte níže uvedenou instrukci v shellu.

$ sudo apt nainstalovat gcc

Vyžaduje, abyste klepnutím na „Y“ pokračovali v instalaci kompilátoru GCC, jinak stisknutím tlačítka „n“ instalaci zavřete. Takže stiskněte tlačítko „y“ a pokračujte stisknutím klávesy Enter.

Výstup pro dokončení je uveden níže.

Příklad 01

Podívejme se na velmi jednoduchý příklad systémového volání „Otevřít“. Nejprve otevřete příkazový shell a vytvořte nový textový soubor „test.txt “pomocí následujícího jednoduchého dotykového příkazu:

$ dotykový test.txt

Přidejte do něj některá data ručně. Data v souboru můžete zobrazit pomocí níže uvedeného příkazu cat.

$ kočičí test.txt

Nyní vytvořme nový soubor C pomocí příkazu nano v shellu, jak je znázorněno níže.

$ nano nové.C

Otevře se níže uvedený soubor GNU nano. Musíte do něj zadat níže uvedený kód jazyka C. Vidíte, že jsme přidali potřebné balíčky knihoven pro správné provedení kódu C. Poté jsme definovali hlavní funkci pro práci na otevřeném systémovém volání. Deklarovali jsme dvě celočíselné proměnné. Proměnná „n“ se používá k počítání hodnot vyrovnávací paměti a „fd“ se používá pro deskriptor souboru. Pole znakového typu vyrovnávací paměti jsme deklarovali jako „buf“ s velikostí 50. Pro načtení obsahu ze souboru „test“ bylo použito otevřené systémové volání.txt ”a vrátit jej do deskriptoru souboru. „O_RDONLY“ byl použit pro účely čtení. Následující řádek ukazuje načtené systémové volání, které má shromáždit 10 bajtů z vyrovnávací paměti a vrátit je do celého čísla n. Příkaz write byl také použit k zápisu dat obsahu nebo vyrovnávací paměti do deskriptoru souboru, což je výstupní obrazovka. V našem případě právě teď. Uložte tento soubor pomocí Ctrl + S a zavřete jej pomocí příkazu Ctrl + X.

#zahrnout
#zahrnout
#zahrnout
#zahrnout
int main ()

int n, fd;
char buf [50];
fd = otevřeno („test.txt ”, O_RDONLY);
n = čtení (fd, buf, 10);
write (1, buf, 10);

Nejprve sestavíme kód C pro otevřené systémové volání pomocí níže uvedeného příkazu gcc.

$ gcc nové.C

Nyní je čas zkontrolovat výstup kódu C pro otevřené systémové volání. Použijme níže uvedené a.příkaz v prostředí. Výstup zobrazuje 10 bajtů z obsahu „testovacího souboru“.txt “.

$ ./A.ven

Vezměme si další příklad pro zápis obsahu jednoho souboru do jiného souboru pomocí systémového volání Open. Chcete-li vytvořit nový soubor C pomocí příkazu nano, jak je uvedeno níže.

$ nano nové.C

Vezměte tedy stejný kód s malou změnou. V kódu jsme definovali další deskriptor souboru jako „fd1“. Celý kód je stejný, kromě jednoho dalšího řádku. Druhý poslední řádek kódu použil otevřené systémové volání k vytvoření nového souboru s názvem „target“ pomocí O_CREAT a režimu, jen pro zápis jako O_WRONLY. 0642 zobrazuje oprávnění přiřazená tomuto souboru. A soubor byl vrácen do nového deskriptoru souboru. Následující řádek ukázal příkaz k zápisu bajtů obsahu do vyrovnávací paměti podle jeho deskriptoru souboru. Uložte soubor a zavřete jej.

Spusťte příkaz gcc compile k ladění souboru jazyka C.

$ gcc nové.C

Chcete-li zobrazit výstup kódu C, zkuste a.instrukce v shellu, jak je uvedeno níže. Neexistuje žádný výstup, protože výstup byl přesměrován na nově vytvořený soubor „target“.

$ ./A.ven

Pojďme zkontrolovat data cíle souboru pomocí příkazu cat. Výstup ukazuje, že soubor má v sobě 20 bajtů.

$ kočka cíl

Závěr

Ve výše uvedeném tutoriálu jsme vám vysvětlili použití otevřeného systémového volání v jazyce C pomocí kompilátoru gcc. S pomocí různých příkladů vysvětlených v této příručce vás dovedeme k implementaci požadovaného programu.

Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...
Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...
Hry Užitečné nástroje pro hráče Linuxu
Užitečné nástroje pro hráče Linuxu
Pokud rádi hrajete hry na Linuxu, je pravděpodobné, že jste ke zlepšení herního zážitku použili aplikace a nástroje jako Wine, Lutris a OBS Studio. Kr...