Cum se folosește Apelul de sistem deschis în C

How Use Open System Call C



Apelurile de sistem sunt utilizate în distribuțiile Linux pentru a oferi o ușă în sistemul de operare Linux și în programe. Sistemul de operare Linux folosește biblioteca Glibc pentru a sprijini apelurile de sistem în timpul utilizării limbajului C. Există mult mai multe modalități de a utiliza și apelurile de sistem. În acest ghid al articolului, vom discuta apelul de sistem deschis în sistemul Linux. Apelul de sistem Open a fost folosit pentru a deschide rapid fișierul specificat în cale. Ne anunță despre descriptorul de fișiere al unui fișier creat de utilizator. Am folosit Ubuntu 20.04 pentru a primi un apel hands-on Open sistem.

Instalați biblioteci

Limbajul C necesită instalarea unor pachete de biblioteci suplimentare ca premise. În primul rând, trebuie să instalați pachetul manpages-dev pentru a verifica informațiile referitoare la apelurile de sistem. Deschideți terminalul din linia de comandă din zona de activitate și executați instrucțiunile de mai jos pentru a instala paginile de manual.







$ sudo apt install manpages-dev



Rezultatul pentru finalizarea instalării a fost dat mai jos.







Acum vom verifica apelul de sistem deschis folosind comanda man ca mai jos.

$ omule2deschis



Pagina manuală de ieșire pentru apelul Open System a fost afișată mai jos. Puteți vedea informațiile suplimentare referitoare la aceasta. Apăsați butonul q pentru a ieși din el.

Sintaxa de mai sus arată primele trei linii de biblioteci necesare pentru a fi adăugate pentru apelurile de sistem. Există trei sintaxe disponibile pentru apelul de sistem deschis. Prima sintaxă arată calea, care este numele unui fișier care urmează să fie deschis. Al doilea parametru, semnalizatoarele, arată modul unui fișier, de exemplu, citire sau scriere. A doua sintaxă poate fi utilizată atunci când fișierul nu există. Modul parametru este utilizat pentru a afișa privilegiile pe fișier.

Acum este timpul să instalați compilatorul GCC pentru depanarea codului C în distribuția Ubuntu 20.04 Linux. Pentru aceasta, executați instrucțiunile de mai jos în shell pentru a face acest lucru.

$ sudo apt install gcc

Este necesar să atingeți Y pentru a continua instalarea compilatorului GCC, altfel apăsați butonul n pentru a închide instalarea. Așa că apăsați butonul y și apăsați Enter pentru a continua.

Ieșirea pentru finalizare este prezentată mai jos.

Exemplul 01

Să vedem exemplul foarte simplu de apel sistem deschis. În primul rând, deschideți shell-ul comenzii și creați un nou fișier text test.txt folosind comanda simplă tactilă, după cum urmează:

$atingeretest.txt

Adăugați câteva date manual. Puteți vedea datele într-un fișier folosind comanda cat de mai jos.

$pisicătest.txt

Acum să creăm un nou fișier C folosind o comandă nano în shell, așa cum se arată mai jos.

$nanonou.c

Fișierul GNO nano de mai jos va fi deschis. Trebuie să tastați codul de limbă C de mai jos. Puteți vedea că am adăugat pachetele de bibliotecă necesare pentru ca codul C să fie executat corect. După aceea, am definit funcția principală pentru a lucra la un apel de sistem deschis. Am declarat două variabile întregi. Variabila n este utilizată pentru a număra valorile tampon, iar fd este utilizat pentru descriptorul de fișiere. Am declarat matricea tampon de tip caracter ca buf având dimensiunea 50. Apelul de sistem deschis a fost folosit pentru a citi conținutul din fișierul test.txt și a-l returna în descriptorul de fișiere. O_RDONLY a fost utilizat în scopuri de citire. Următoarea linie arată apelul de sistem citit pentru a colecta cei 10 octeți din buffer și a-l returna în numărul întreg n. De asemenea, comanda write a fost folosită pentru a scrie conținutul sau datele tampon în descriptorul de fișiere, care este ecranul de ieșire În cazul nostru chiar acum. Salvați acest fișier folosind Ctrl + S și închideți-l folosind comanda Ctrl + X.

#include
#include
#include
#include

intprincipal()
{
intn,fd;
charbuf[cincizeci];
fd=deschis(Test.txt,O_RDONLY);
n=citit(fd,buf, 10);
scrie(1 ,buf, 10);

Să compilăm mai întâi codul C pentru un apel de sistem deschis folosind comanda gcc de mai jos.

$gccnou.c

Acum este timpul să verificați ieșirea pentru codul C pentru un apel de sistem deschis. Să folosim comanda a.out de mai jos în shell. Ieșirea afișează cei 10 octeți din conținutul unui fișier test.txt.

$./la.afară

Să luăm un alt exemplu pentru a scrie conținutul unui fișier într-un alt fișier folosind un apel de sistem deschis. Pentru a crea un nou fișier C folosind comanda nano, după cum se arată mai jos.

$ nano nou.c

Deci, luați același cod cu o modificare minoră. Am definit un alt descriptor de fișier în cod ca fd1. Tot codul este același, cu excepția unei linii suplimentare. Cea de-a doua ultimă linie a codului a folosit apelul de sistem deschis pentru a crea un nou fișier numit țintă folosind O_CREAT și modul, numai în scriere ca O_WRONLY. 0642 prezintă privilegiile atribuite acestui fișier. Și fișierul a fost returnat la un nou descriptor de fișiere. Următoarea linie a arătat o comandă pentru a scrie octeții de conținut în buffer conform descriptorului său de fișiere. Salvați fișierul și închideți-l.

Executați comanda gcc compile pentru a depana fișierul în limbă C.

$ gcc nou.c

Pentru a afișa ieșirea codului C, încercați instrucțiunea a.out în shell ca mai jos. Nu există nicio ieșire, deoarece ieșirea a fost redirecționată către fișierul țintă nou creat.

$./la.afară

Să verificăm datele unui fișier țintă folosind comanda cat. Ieșirea arată că fișierul are 20 de octeți.

$ pisică țintă

Concluzie

În tutorialul de mai sus, v-am explicat să utilizați un apel de sistem deschis în limbajul C utilizând compilatorul gcc. Cu ajutorul diferitelor exemple explicate în acest ghid vă va conduce să implementați programul dorit.