Kā izmantot rakstīšanas sistēmas zvanu C

How Use Write System Call C



Sistēmas zvans kalpo kā galvenā vārteja starp programmām un Linux operētājsistēmas kodolu. Lai gan jums gandrīz noteikti būtu nepieciešams sistēmas izsaukums visā C programmēšanas karjerā neatkarīgi no tā, vai vēlaties sasniegt izcilu produktivitāti vai noteiktu funkciju stilu, Glibc repozitorijs vai citas standarta bibliotēkas, kas atrodamas populārajos Linux izplatījumos, būs pietiekamas lielākajai daļai jūsu prasībām. Šajā rokasgrāmatā mēs izveidosim koncepciju par rakstīšanas sistēmas zvanu C valodā.

Sintakse:

#iekļaut

ssize_trakstīt(int fd, const void*buf, lieluma_t skaits);

Šajā sintaksē pirmajā rindā ir redzama sistēmas zvanu bibliotēka. Otrajā rindā fd apzīmē faila aprakstu, kas patiešām ir skaitlis, kas norāda procesa atvērto failu. Atslēgvārds *buf apzīmē buferšķīdumu. Tajā ir visi dati. Nākamais ir skaitīšana. Tas ir baitu skaits, kas no bufera jāraksta faila deskriptoram.







Instalēšanas priekšnoteikumi:

Lai palaistu jebkuru C valodas kodu, vispirms ir jāinstalē dažas paketes Linux izplatīšanā. Ja vēlaties redzēt papildu informāciju par rakstīšanas sistēmas izsaukumu, jums ir jāinstalē pakete manpages-dev. Lai atvērtu termināli, izmantojot īsinājumtaustiņu Ctrl+Alt+T. Pēc tā atvēršanas, lai instalētu manpages, uzrakstiet zemāk komandu apt install, kam seko atslēgvārds manpages-dev.



$sudotrāpīgsuzstādītmanpages-dev



Manupāžu instalēšana prasīs zināmu laiku. Pagaidiet, līdz tas tiks pabeigts.





Pēc instalēšanas jūs varat redzēt papildu informāciju par rakstīšanas sistēmas zvanu, izmantojot apvalkā zemāk esošo komandu.



$cilvēks 2 rakstīt

Rakstīšanas komandas izvades cilne ir norādīta zemāk. Jūs varat izlasīt informāciju par to. Nospiediet q, lai izietu no rokasgrāmatas.

Tagad ir pienācis laiks instalēt Gcc pakotni savā Linux sistēmā, lai tā darbotos C valodā. Lai to izdarītu, atveriet apvalku un uzrakstiet zemāk esošo instalēšanas komandu, kam seko atslēgvārds gcc.

$sudotrāpīgsuzstādīt gcc

Tikmēr instalēšanas laikā tā var lūgt apstiprināt šo instalēšanas darbību, nospiežot y, lai turpinātu, un n, lai to apturētu. Tātad, pieskarieties taustiņam y un nospiediet taustiņu Enter.

Tas tiks instalēts jūsu sistēmā dažu minūšu laikā, un pēdējās izvades rindas būs tādas, kā parādīts zemāk esošajā momentuzņēmumā.

Piemēri:

Mūsu Linux izplatīšanā ir daži rakstīšanas sistēmas izsaukuma piemēri. Tāpēc atveriet komandrindas apvalku un izveidojiet tajā jaunu C failu ar dot c paplašinājumu. Lai to ātri izveidotu un atvērtu, jums jāizmanto zemāk esošā nano komanda. Mēs esam devuši tam nosaukumu kā jauns.c.

$nanojauns.c

Tiks atvērts zemāk esošais logs. Tagad jums ir jāraksta pievienotais kods šajā failā. Šajā kodā vispirms esam iekļāvuši unistd.h bibliotēku. Tad mēs esam izveidojuši galveno funkciju un šīs funkcijas ietvaros esam izveidojuši rakstīšanas sistēmas zvanu. Šajā sistēmas izsaukumā pats pirmais parametrs ir faila apraksts. Šajā gadījumā vesels skaitlis 1 apzīmē izvadierīces ekrānu, un tas ir fiksēts. Tātad mūsu produkcija tiks parādīta ekrānā. Otrais parametrs parāda bufera datus. Jūs varat tam pievienot jebko. Un pēdējais parametrs parāda bufera parametrā norādīto datu skaitīšanas numuru. Kā mēs esam minējuši 5 kā skaitīšanas skaitli, tas parādīs tikai pirmos 5 baitus no bufera datiem un ignorēs atlikušos baitus. Saglabājiet šo kodu, izmantojot īsinājumtaustiņu Ctrl+S un izejiet no šī faila, izmantojot komandu Ctrl+X.

#iekļaut

Int galvenais()

{Rakstīt(1Aqsa Yasin5);}

Tagad terminālī izmēģiniet zemāk esošo komandu gcc, lai apkopotu šo jaunizveidoto kodu ar faila nosaukumu.

$gccjauns.c

Apskatīsim šo kodu, izmantojot noklusējuma failu a.out, kas izveidots izpildes laikā. Tātad, izmēģiniet zemāk esošo komandu a.out, lai pārbaudītu rakstīšanas sistēmas izsaukuma izvadi. Mums tas jāizmanto kopā ar ./, lai izvēlētos failu no pašreizējā direktorija.

$./a. ārā

Redzamajā iznākumā ir parādīts tikai vārds Aqsa, jo skaitlis ir 5.

Nedaudz mainīsim kodu. Mēs esam mainījuši skaitļu skaitu uz 11, jo mūsu bufera datos Aqsa Yasin kopā ir 11 baiti. Tātad šoreiz izvadē tiks parādīti visi virkņu datu baiti Aqsa Yasin. Saglabājiet šo failu, izmantojot Ctrl+S, un aizveriet, izmantojot īsinājumtaustiņu Ctrl+X.

Apkoposim atjaunināto kodu, izmantojot tikko instalēto gcc kompilatoru Linux izplatīšanai. Izmēģiniet to pašu komandu gcc kopā ar faila nosaukumu kā new.c.

$gccjauns.c

Tagad parādiet tā paša koda izvadi, izmantojot iepriekšējo komandu a.out, kā norādīts zemāk. Izvade parāda bufera pilnu virkni Aqsa Yasin.

$./a. ārā

Apskatīsim, kā darbojas kods, ja skaitļu skaitu ņemam lielāku par kopējo buitu datu baitu skaitu. Tātad, mēs esam izmantojuši skaitli kā 30. Saglabājiet un aizveriet failu.

Apkopojiet to pašu atjaunināto failu, izmantojot komandu gcc, kā norādīts zemāk.

$gccjauns.c

Tagad izpildiet failu, izmantojot komandu a.out, un izvadē tiks parādīti bufera dati, kā arī dažas atkritumu vērtības, kā parādīts zemāk esošajā momentuzņēmuma izvadē. $ ./A.out

Varat arī pārbaudīt kopējo failā ierakstīto baitu skaitu, izmantojot tajā pašā failā esošo zemāk esošo kodu.

Apkopojiet kodu, izmantojot gcc instrukciju.

$gccjauns.c

Izvade parāda kopējo baitu skaitu, ieskaitot bufera datus un rindas pārtraukumu, izmantojot komandu a.out.

$./a. ārā

Secinājums:

Šajā apmācībā mēs esam izstrādājuši koncepciju, kā izmantot rakstīšanas sistēmas zvanu C. Izmēģiniet visus piemērus, lai izprastu rakstīšanas sistēmas izsaukuma ideju, izmantojot šo rakstu.