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é.CChcete-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.venPojď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.