Kuinka käyttää avoimen järjestelmän puhelua C: ssä

How Use Open System Call C



Järjestelmäkutsuja käytetään Linux -jakeluissa tarjoamaan oviaukko Linux -käyttöjärjestelmässä ja ohjelmissa. Linux -käyttöjärjestelmä tukee Glibc -kirjastoa järjestelmän puheluiden käyttämiseen C -kieltä käytettäessä. On myös paljon muita tapoja käyttää järjestelmäpuheluita. Tässä artikkelioppaassa keskustelemme avoimen järjestelmän puhelusta Linux -järjestelmässä. Avaa järjestelmä -kutsua on käytetty polun määrittämän tiedoston avaamiseen nopeasti. Se kertoi meille käyttäjän luoman tiedoston tiedostojen kuvauksesta. Olemme käyttäneet Ubuntu 20.04: tä saadaksemme käytännön avoimen järjestelmän puhelun.

Asenna kirjastot

C -kieli edellyttää joidenkin lisäkirjastopakettien asentamista edellytyksenä. Ensinnäkin sinun on asennettava manpages-dev-paketti tarkistaaksesi järjestelmän puheluita koskevat tiedot. Avaa komentoriviterminaali toiminta -alueelta ja asenna manpages noudattamalla alla olevia ohjeita.







$ sudo apt asentaa manpages-dev



Asennuksen valmistumisen tulos on annettu alla.







Nyt tarkistamme avoimen järjestelmän puhelun käyttämällä man -komentoa alla.

$ mies2avata



Open system -kutsun ulostulon man -sivu on esitetty alla. Voit nähdä siihen liittyviä lisätietoja. Poistu painamalla q -painiketta.

Yllä oleva syntaksi näyttää kolme ensimmäistä riviä tarvittavia kirjastoja, jotka on lisättävä järjestelmäpuheluita varten. Avoimen järjestelmän puheluun on saatavana kolme syntaksia. Ensimmäinen syntaksi näyttää polun nimen, joka on avattavan tiedoston nimi. Toinen parametri, liput, näyttää tiedoston tilan, esim. Lukea tai kirjoittaa. Toista syntaksia voidaan käyttää, kun tiedostoa ei ole olemassa. Parametritilaa käytetään tiedoston oikeuksien näyttämiseen.

Nyt on aika asentaa GCC -kääntäjä C -koodin virheenkorjausta varten Ubuntu 20.04 Linux -jakelussa. Suorita tätä varten kuoren alla oleva ohje.

$ sudo apt asentaa gcc

Sinun on napautettava Y jatkaaksesi GCC -kääntäjän asentamista, muuten voit sulkea asennuksen painamalla n -painiketta. Joten paina y -painiketta ja jatka painamalla Enter.

Valmistuksen tulos näkyy alla.

Esimerkki 01

Katsotaanpa hyvin yksinkertaista esimerkkiä avoimen järjestelmän puhelusta. Avaa ensin komentotulku ja luo uusi tekstitiedosto test.txt käyttämällä yksinkertaista kosketuskomentoa seuraavasti:

$kosketustest.txt

Lisää siihen tietoja manuaalisesti. Näet tiedoston tiedot käyttämällä alla olevaa cat -komentoa.

$kissatest.txt

Luodaan nyt uusi C -tiedosto käyttämällä kuoren nano -komentoa, kuten alla on esitetty.

$nanouusi. c

Alla oleva GNU -nano -tiedosto avataan. Sinun on kirjoitettava alla oleva C -kielikoodi siihen. Näet, että olemme lisänneet tarvittavat kirjastopaketit, jotta C -koodi voidaan suorittaa oikein. Sen jälkeen olemme määritelleet päätoiminnon, joka toimii avoimen järjestelmän puhelun kanssa. Olemme ilmoittaneet kaksi kokonaislukumuuttujaa. N -muuttujaa käytetään puskuriarvojen laskemiseen ja fd -tiedostoa tiedostonkuvaajaksi. Olemme julistaneet merkkityyppisen puskurimatriisin bufiksi, jonka koko on 50. Avoimen järjestelmän kutsua on käytetty sisällön lukemiseen tiedostosta test.txt ja sen palauttamiseen tiedoston kuvaajaan. O_RDONLY on käytetty lukutarkoituksiin. Seuraavalla rivillä näkyy lukujärjestelmän kutsu kerätä 10 tavua puskurista ja palauttaa se kokonaislukuun n. Kirjoituskomentoa on myös käytetty sisällön tai puskuritietojen kirjoittamiseen tiedoston kuvaajaan, joka on tulostusnäyttö Meidän tapauksessamme juuri nyt. Tallenna tämä tiedosto painamalla Ctrl+S ja sulje se Ctrl+X -komennolla.

#sisältää
#sisältää
#sisältää
#sisältää

inttärkein()
{
intn,fd;
hiiltyäbuf[viisikymmentä];
fd=avata(testata.txt,O_RDONLY);
n=lukea(fd,buf, 10);
kirjoittaa(1 ,buf, 10);

Käännetään ensin C -koodi avoimelle järjestelmäkutsulle käyttämällä alla olevaa gcc -komentoa.

$gccuusi. c

Nyt on aika tarkistaa avoimen järjestelmäpuhelun C -koodin lähtö. Käytämme kuoren alla olevaa a.out -komentoa. Tulos näyttää 10 tavua test.txt -tiedoston sisällöstä.

$./kohteeseen.ulos

Otetaan toinen esimerkki yhden tiedoston sisällön kirjoittamisesta toiseen tiedostoon käyttämällä avointa järjestelmäpuhelua. Uuden C -tiedoston luominen nano -komennolla alla.

$ nano uusi.c

Joten ota sama koodi pienellä muutoksella siihen. Olemme määrittäneet koodissa toisen tiedostonkuvaajan fd1. Kaikki koodit ovat samat paitsi yksi ylimääräinen rivi. Koodin toinen viimeinen rivi on käyttänyt avointa järjestelmäpuhelua luodakseen uuden tiedoston nimeltä target käyttäen O_CREAT- ja -tilaa, vain kirjoittamalla muodossa O_WRONLY. 0642 näyttää tälle tiedostolle määritetyt oikeudet. Ja tiedosto on palautettu uuteen tiedoston kuvaajaan. Seuraava rivi on osoittanut komennon kirjoittaa puskurin sisällön tavut sen tiedoston kuvaajan mukaan. Tallenna tiedosto ja sulje se.

Suorita gcc compile -komento C -kielitiedoston virheenkorjaukseen.

$ gcc uutta.c

Jos haluat näyttää C -koodin tuloksen, kokeile kuoren a.out -ohjetta alla kuvatulla tavalla. Lähtöä ei ole, koska tulostus on uudelleenohjattu juuri luotuun tiedostokohteeseen.

$./kohteeseen.ulos

Tarkistetaan tiedostokohteen tiedot cat -komennolla. Tulos osoittaa, että tiedostossa on 20 tavua.

$ kissan tavoite

Johtopäätös

Yllä olevassa opetusohjelmassa selitimme sinulle, että käytät avointa järjestelmäpuhelua C -kielellä käyttämällä gcc -kääntäjää. Tässä oppaassa selitettyjen erilaisten esimerkkien avulla voit toteuttaa haluamasi ohjelman.