Com s'utilitza la trucada al sistema d'escriptura en C.

How Use Write System Call C



La trucada del sistema serveix com a passarel·la principal entre els programes i el nucli del sistema operatiu Linux. Tot i que gairebé segur que haureu de fer una trucada al sistema durant tota la vostra carrera de programació C, tant si teniu com a objectiu una productivitat excepcional o un determinat estil de funcions, el dipòsit Glibc o altres biblioteques estàndard que es troben a les distribucions populars de Linux seran suficients per a la vostra majoria requisits. En aquesta guia, establirem un concepte sobre la trucada del sistema d’escriptura en llenguatge C.

Sintaxi:

#incloure

ssize_tescriure(int fd, const void*buf, mida_t recompte);

En aquesta sintaxi anterior, la primera línia mostra la biblioteca per a les trucades del sistema. A la segona línia, fd significa un descriptor de fitxers, que és un número que especifica el fitxer obert d’un procés. La paraula clau * buf significa buffer. Conté les dades que conté. El següent és el recompte. És el nombre de bytes que s’escriuen en un descriptor de fitxer des de la memòria intermèdia.







Instal·leu els requisits previs:

Per executar qualsevol codi d'idioma C, primer heu d'instal·lar alguns paquets a la distribució Linux. Si voleu obtenir més informació sobre la trucada al sistema d'escriptura, heu d'instal·lar el paquet manpages-dev per fer-ho. Per obrir el terminal mitjançant la tecla de drecera Ctrl + Alt + T. Després d'obrir-lo, escriviu l'ordre apt install següent, seguida de la paraula clau manpages-dev per instal·lar pàgines de man.



$suoapteinstal·larmanpages-dev



La instal·lació de pàgines manuals trigarà una mica de temps. Espereu que es completi.





Després de la instal·lació, podeu veure la informació addicional sobre la trucada del sistema d'escriptura mitjançant l'ordre man següent a l'intèrpret d'ordres.



$home 2 escriure

A continuació es mostra la pàgina manual de sortida de l’ordre d’escriptura. Podeu llegir la informació al respecte. Premeu q per sortir del manual.

Ara és hora d’instal·lar el paquet Gcc al vostre sistema Linux per treballar en llenguatge C. Per a això, obriu l'intèrpret d'ordres i escriviu l'ordre apt install següent, seguida de la paraula clau gcc.

$suoapteinstal·lar gcc

Mentrestant, durant la instal·lació us pot demanar que confirmeu aquesta acció d’instal·lació prement y per continuar i n per aturar-la. Per tant, toqueu la tecla y i premeu la tecla Retorn.

S'instal·larà al vostre sistema en uns minuts i les darreres línies de sortida seran les que es mostren a la instantània següent.

Exemples:

Vegem alguns exemples de trucades al sistema d’escriptura a la nostra distribució Linux. Per tant, obriu l’intèrpret d’ordres de la línia d’ordres i creeu-hi un fitxer C nou amb l’extensió de punt c. Heu d’utilitzar l’ordre nano següent per crear-lo i obrir-lo ràpidament. Li hem donat el nom de new.c.

$nanonou.c

S'obrirà la finestra següent. Ara heu d’escriure el codi adjunt en aquest fitxer. En aquest codi, primer hem inclòs una biblioteca unistd.h. Després hem creat la funció principal i, dins d’aquesta funció, hem creat una trucada al sistema d’escriptura. En aquesta trucada de sistema, el primer paràmetre és el descriptor de fitxers. En aquest cas, l’enter 1 representa la pantalla del dispositiu de sortida i és fixa. Per tant, la nostra sortida es mostrarà a la pantalla. El segon paràmetre mostra les dades de la memòria intermèdia. Podeu afegir-hi qualsevol cosa. I l'últim paràmetre mostra el nombre de recompte de les dades donades al paràmetre de memòria intermèdia. Com hem esmentat 5 com a número de recompte, només mostrarà els primers 5 bytes de les dades de la memòria intermèdia i ignorarà els bytes que queden. Deseu aquest codi mitjançant la tecla de drecera Ctrl + S i sortiu d’aquest fitxer amb l’ordre Ctrl + X.

#incloure

Int main()

{Escriu(1Aqsa Yasin5);}

Ara, al terminal, proveu l'ordre gcc següent per compilar aquest codi recentment creat amb un nom de fitxer.

$gccnou.c

Vegem aquest codi mitjançant el fitxer a.out predeterminat creat en temps d'execució. Per tant, proveu l'ordre a.out següent per comprovar la sortida de la trucada del sistema d'escriptura. L’hem d’utilitzar amb ./ per triar el fitxer del directori actual.

$./a.out

La sortida que podeu veure només ha mostrat la paraula Aqsa a causa del recompte número 5.

Canviem una mica el nostre codi. Hem canviat el nombre de recompte a 11 perquè tenim un total d'11 bytes a les nostres dades de memòria intermèdia Aqsa Yasin. Aquesta vegada, la sortida mostrarà tots els bytes de dades de cadena Aqsa Yasin. Deseu aquest fitxer amb Ctrl + S i sortiu amb la tecla de drecera Ctrl + X.

Compilem el codi actualitzat amb el compilador gcc acabat d’instal·lar per a la distribució de Linux. Proveu la mateixa ordre gcc juntament amb el nom d'un fitxer que new.c.

$gccnou.c

Ara mostreu la sortida del mateix codi amb l'ordre anterior a.out que es mostra a continuació. La sortida mostra la cadena completa Aqsa Yasin del buffer.

$./a.out

Vegem com funciona el codi quan prenem el nombre de recompte superior al nombre total de bytes que contenen les dades de la memòria intermèdia. Per tant, hem utilitzat el recompte com a 30. Deseu i tanqueu el fitxer.

Compileu el mateix fitxer actualitzat mitjançant l'ordre gcc que es mostra a continuació.

$gccnou.c

Ara executeu el fitxer utilitzant l'ordre a.out i la sortida mostrarà les dades de memòria intermèdia i alguns valors d'escombraries que es mostren a la sortida de la instantània a continuació. $ ./A.out

També podeu comprovar el nombre total de bytes escrits al fitxer mitjançant el codi següent al mateix fitxer.

Compileu el codi mitjançant instruccions gcc.

$gccnou.c

La sortida mostra el nombre total de bytes, incloses les dades de memòria intermèdia i el salt de línia, mitjançant l'ordre a.out.

$./a.out

Conclusió:

En aquest tutorial, hem elaborat el concepte d'utilitzar la trucada del sistema d'escriptura a C. Proveu tots els exemples per entendre la idea de la trucada del sistema d'escriptura mitjançant aquest article.