Com s'utilitza la trucada de sistema oberta a C.

How Use Open System Call C



Les trucades del sistema s’utilitzen a les distribucions de Linux per proporcionar una porta d’entrada dins del sistema operatiu Linux i dels programes. El sistema operatiu Linux utilitza la biblioteca Glibc per donar suport a les trucades del sistema mentre s’utilitza el llenguatge C. També hi ha moltes maneres d’utilitzar les trucades del sistema. En aquesta guia de l'article, parlarem de la trucada del sistema obert al sistema Linux. La trucada del sistema Open s'ha utilitzat per obrir ràpidament el fitxer especificat al camí. Ens ha fet saber el descriptor de fitxer creat per l'usuari. Hem estat utilitzant Ubuntu 20.04 per obtenir trucades pràctiques al sistema Open.

Instal·leu biblioteques

El llenguatge C requereix alguns paquets de biblioteca addicionals per instal·lar-se com a requisits previs. Primer de tot, heu d’instal·lar el paquet manpages-dev per comprovar la informació relativa a les trucades del sistema. Obriu el terminal de línia d'ordres des de l'àrea d'activitat i executeu la instrucció següent per instal·lar pàgines de manual.







$ sudo apt install pàgines de manual-dev



A continuació es mostra la sortida per a la finalització de la instal·lació.







Ara comprovarem la trucada del sistema obert mitjançant l'ordre man tal com es mostra a continuació.

$ home2obert



A continuació es mostra la pàgina manual de sortida per a la trucada del sistema Obert. Podeu veure la informació addicional al respecte. Premeu el botó q per sortir-ne.

La sintaxi anterior mostra les tres primeres línies de biblioteques necessàries per afegir a les trucades del sistema. Hi ha tres sintaxis disponibles per a la trucada del sistema obert. La primera sintaxi mostra el camí d'accés, que és el nom d'un fitxer que s'ha d'obrir. El segon paràmetre, els marcadors, mostra el mode d’un fitxer, per exemple, llegir o escriure. La segona sintaxi es pot utilitzar quan el fitxer no existeix. El mode de paràmetre s’utilitza per mostrar els privilegis al fitxer.

Ara és el moment d’instal·lar el compilador GCC per a la depuració del codi C a la distribució Ubuntu 20.04 Linux. Per a això, executeu la següent instrucció a l'intèrpret d'ordres per fer-ho.

$ sudo apt install gcc

Requereix que toqueu Y per continuar instal·lant el compilador GCC; en cas contrari, premeu el botó n per tancar la instal·lació. Per tant, premeu el botó y i premeu Retorn per continuar.

La sortida per a la finalització es mostra a continuació.

Exemple 01

Vegem l’exemple molt simple d’una trucada al sistema Open. En primer lloc, obriu l’intèrpret d’ordres i creeu un nou fitxer de text test.txt mitjançant l’ordre senzill tàctil de la següent manera:

$tocartest.txt

Afegiu-hi algunes dades manualment. Podeu veure les dades en un fitxer mitjançant l'ordre cat següent.

$gattest.txt

Ara creem un fitxer C nou amb una ordre nano a l'intèrpret d'ordres, tal com es mostra a continuació.

$nanonou.c

S'obrirà el fitxer nano GNU següent. Heu d’escriure el codi d’idioma C següent. Podeu veure que hem afegit els paquets de biblioteca necessaris perquè el codi C s’executi correctament. Després d'això, hem definit la funció principal per treballar en una trucada al sistema Open. Hem declarat dues variables enteres. La variable n s’utilitza per comptar els valors de memòria intermèdia i la fd s’utilitza per al descriptor de fitxers. Hem declarat que la matriu de memòria intermèdia del tipus de caràcter és buf de mida 50. La trucada del sistema obert s'ha utilitzat per llegir el contingut del fitxer test.txt i tornar-lo al descriptor del fitxer. L’O_RDONLY s’ha utilitzat amb finalitats de lectura. La següent línia mostra la trucada del sistema de lectura per recollir els 10 bytes de la memòria intermèdia i retornar-la al número enter n. A més, l'ordre write s'ha utilitzat per escriure el contingut o les dades de memòria intermèdia al descriptor de fitxers, que és la pantalla de sortida En el nostre cas ara mateix. Deseu aquest fitxer amb Ctrl + S i tanqueu-lo amb l'ordre Ctrl + X.

#incloure
#incloure
#incloure
#incloure

intprincipal()
{
intn,fd;
charbuf[50];
fd=obert(prova.txt,O_RDONLY);
n=llegir(fd,buf, 10);
escriure(1 ,buf, 10);

Primer compilem el codi C per a una trucada de sistema oberta mitjançant l'ordre gcc que es mostra a continuació.

$gccnou.c

Ara és hora de comprovar la sortida del codi C per a una trucada al sistema obert. Utilitzem l'ordre a.out següent a l'intèrpret d'ordres. La sortida mostra els 10 bytes del contingut d'un fitxer test.txt.

$./a.fora

Prenguem un altre exemple per escriure el contingut d’un fitxer en un altre mitjançant una trucada al sistema Open. Per crear un fitxer C nou amb l'ordre nano tal com es mostra a continuació.

$ nano nou.c

Per tant, agafeu el mateix codi amb un canvi menor. Hem definit un altre descriptor de fitxer al codi com a fd1. Tot el codi és el mateix, excepte una línia addicional. La segona última línia del codi ha utilitzat la trucada del sistema obert per crear un fitxer nou anomenat target mitjançant O_CREAT i el mode, només d’escriptura com a O_WRONLY. 0642 mostra els privilegis assignats a aquest fitxer. I el fitxer s’ha retornat a un descriptor de fitxers nou. La següent línia ha mostrat una ordre per escriure els bytes de contingut a la memòria intermèdia segons el seu descriptor de fitxers. Deseu el fitxer i tanqueu-lo.

Executeu l'ordre gcc compile per depurar el fitxer en idioma C.

$ gcc nou.c

Per mostrar la sortida del codi C, proveu la instrucció a.out al shell com es mostra a continuació. No hi ha cap sortida perquè la sortida s'ha redirigit al fitxer de destinació nou creat.

$./a.fora

Comproveu les dades d'un fitxer de destinació mitjançant l'ordre cat. La sortida mostra que el fitxer conté 20 bytes.

$ cat objectiu

Conclusió

Al tutorial anterior, us expliquem que utilitzeu una trucada de sistema oberta en llenguatge C mitjançant el compilador gcc. Amb l'ajut de diferents exemples explicats en aquesta guia, us portarà a implementar el programa desitjat.