Kirjoitusjärjestelmän puhelun käyttäminen C

How Use Write System Call C



Järjestelmäpuhelu toimii ensisijaisena yhdyskäytävänä ohjelmien ja Linux -käyttöjärjestelmän ytimen välillä. Vaikka sinun pitäisi melkein varmasti saada järjestelmäkutsu koko C -ohjelmointiurasi aikana, olitpa sitten tavoittelemassa poikkeuksellista tuottavuutta tai tiettyä ominaisuustyyliä, Glibc -arkisto tai muut suositut Linux -distroissa olevat vakiokirjastot riittävät suurelle osalle vaatimukset. Tässä oppaassa luomme käsityksen Write System -puhelusta C -kielellä.

Syntaksi:

#sisältää

ssize_tkirjoittaa(int fd, const void*buf, size_t count);

Tässä yllä olevassa syntaksissa ensimmäinen rivi näyttää järjestelmäkutsujen kirjaston. Toisella rivillä fd tarkoittaa tiedoston kuvaajaa, joka on todellakin numero, joka määrittää prosessin avoimen tiedoston. Avainsana *buf tarkoittaa puskuria. Tämä sisältää kaikki tiedot. Seuraavaksi lasketaan. Se on tavun määrä, joka kirjoitetaan puskurista tiedostojen kuvaajaan.







Asennuksen edellytykset:

Jos haluat suorittaa minkä tahansa C -kielikoodin, sinun on ensin asennettava joitakin paketteja Linux -jakeluun. Jos haluat nähdä lisätietoja kirjoitusjärjestelmäkutsusta, sinun on asennettava manpages-dev-paketti. Päätelaitteen avaaminen Ctrl+Alt+T -pikanäppäimellä. Kirjoita avaamisen jälkeen alla oleva apt install -komento ja manpages-dev avainsana manpagesin asentamiseksi.



$sudosopivaAsentaamanpages-dev



Manpasivujen asentaminen kestää jonkin aikaa. Odota, että se valmistuu.





Asennuksen jälkeen näet lisätietoja kirjoitusjärjestelmäkutsusta kuoren alla olevan man -komennon kautta.



$mies 2 kirjoittaa

Kirjoituskomennon man -sivu on annettu alla. Voit lukea sen tiedot. Poistu käyttöoppaasta painamalla q.

Nyt on aika asentaa Gcc -paketti Linux -järjestelmääsi toimimaan C -kielellä. Avaa sitä varten kuori ja kirjoita alla oleva apt install -komento ja avainsana gcc.

$sudosopivaAsentaa gcc

Samalla se voi asennuksen aikana pyytää sinua vahvistamaan tämän asennustoiminnon painamalla y jatkaaksesi ja n lopettaaksesi sen. Napauta siis y -näppäintä ja paina Enter -näppäintä.

Se asennetaan järjestelmään muutaman minuutin kuluessa, ja viimeiset tulostusrivit ovat alla olevan tilannekuvan mukaiset.

Esimerkkejä:

Otetaan esimerkkejä kirjoitusjärjestelmäkutsusta Linux -jakelussa. Avaa siis komentorivikuori ja luo siihen uusi C-tiedosto piste c -laajennuksella. Sinun on käytettävä alla olevaa nano -komentoa sen nopeaan luomiseen ja avaamiseen. Olemme antaneet sille nimen uutena. C.

$nanouusi. c

Alla oleva ikkuna avautuu. Nyt sinun on kirjoitettava kiinnitetty koodi tähän tiedostoon. Tähän koodiin olemme sisällyttäneet ensin unistd.h -kirjaston. Sitten olemme luoneet päätoiminnon ja tämän toiminnon sisällä kirjoitusjärjestelmäkutsun. Tässä järjestelmäkutsussa ensimmäinen parametri on tiedoston kuvaaja. Tässä tapauksessa kokonaisluku 1 edustaa tulostuslaitteen näyttöä ja se on kiinteä. Joten tuotoksemme näytetään näytöllä. Toinen parametri näyttää puskuritiedot. Voit lisätä siihen mitä tahansa. Ja viimeinen parametri näyttää puskuriparametrissa annettujen tietojen lukumäärän. Kuten olemme maininneet 5 laskentanumerona, se näyttää vain puskuritietojen ensimmäiset 5 tavua ja jättää huomiotta jäljellä olevat tavut. Tallenna tämä koodi Ctrl+S -pikanäppäimellä ja poistu tästä tiedostosta Ctrl+X -komennolla.

#sisältää

Int pää()

{Kirjoittaa(1Aqsa Yasin5);}

Kokeile nyt päätelaitteessa alla olevaa gcc -komentoa kääntääksesi tämän uuden koodin tiedostonimellä.

$gccuusi. c

Tarkistetaan tämä koodi käyttämällä ajon aikana luotua oletusarvoista a.out -tiedostoa. Joten kokeile alla olevaa a.out -komentoa tarkistaaksesi kirjoitusjärjestelmäkutsun ulostulon. Meidän on käytettävä sitä ./: n kanssa tiedoston valitsemiseksi nykyisestä hakemistosta.

$./a. ulos

Näetulosteessa on näytetty vain sana Aqsa laskentanumeron 5 vuoksi.

Muutetaan koodia hieman. Olemme muuttaneet lukumäärän 11: ksi, koska puskuritiedoissamme on yhteensä 11 tavua Aqsa Yasin. Joten tällä kertaa ulostulo näyttää koko tavun merkkijonodataa Aqsa Yasin. Tallenna tämä tiedosto painamalla Ctrl+S ja lopeta Ctrl+X -pikanäppäimellä.

Käännetään päivitetty koodi käyttämällä Linux -jakelua vasta asennettua gcc -kääntäjää. Kokeile samaa gcc -komentoa yhdessä tiedoston nimen kanssa kuin new.c.

$gccuusi. c

Näytä nyt saman koodin tulostus käyttämällä edellistä a.out -komentoa kuten alla. Lähtö näyttää puskurin koko merkkijonon Aqsa Yasin.

$./a. ulos

Katsotaanpa, miten koodi toimii, kun otamme lukumäärän suuremmaksi kuin puskuritietojen tavujen kokonaismäärä. Joten olemme käyttäneet laskua 30. Tallenna ja sulje tiedosto.

Käännä sama päivitetty tiedosto gcc -komennolla alla.

$gccuusi. c

Suorita nyt tiedosto käyttämällä a.out -komentoa, ja tulostus näyttää puskuritiedot sekä jonkin verran roska -arvoa sen kanssa, kuten alla olevassa tilannekuvassa näytetään. $ ./A.out

Voit myös tarkistaa tiedostoon kirjoitettujen tavujen kokonaismäärän käyttämällä saman tiedoston alla olevaa koodia.

Käännä koodi gcc -ohjeella.

$gccuusi. c

Tulos näyttää tavujen kokonaismäärän, mukaan lukien puskuritiedot ja rivinvaihdon, käyttämällä a.out -komentoa.

$./a. ulos

Johtopäätös:

Tässä opetusohjelmassa olemme kehittäneet käsitettä kirjoitusjärjestelmän puhelun käyttämiseksi C: ssä. Kokeile kaikkia esimerkkejä ymmärtääksesi kirjoitusjärjestelmän puhelun ajatuksen tämän artikkelin avulla.