Bind systemanrop i C

Bind systemanrop i C
Bind () -systemanropet binder en adresse eller navn med hvilken som helst stikkontakt på C -språket. Denne systemanropet har for det meste blitt brukt i sokkelprogrammering. Denne adressen vil være bundet til sokkelbeskrivelsen. Bind () systemanropet inneholder tre parametere i faktisk. Den første er beskrivelsen av en stikkontakt. Den andre parameteren er pekeren som brukes til adressen til en stikkontakt. Adressen må være en lokal vei. Det tredje argumentet kan være på størrelse med en sokkeladresse. Dagens guide vil se hvordan "bind ()" systemanropet fungerer i Ubuntu 20.04 Bruke C -språket. Så logg inn fra systemet først.

Eksempel:

Etter den vellykkede og riktige påloggingen fra brukerkontoen til Linux -systemet, åpner du Shell -konsollapplikasjonen. Du kan enten bruke snarveisnøkkelen “Ctrl+Alt+T” eller søke den fra skrivebordsaktivitetsområdet for å starte den. Etter lanseringen av terminalkonsollen, la oss først opprette en C -språkfil med den kjente spørringen "Touch" som følger:

Denne filen er opprettet i Linux Home -mappen. For å åpne og redigere denne filen, bruk hvilken som helst enkel redigering. De mest foreslåtte er vim og gnu. Så vi har brukt “GNU” Nano -redaktøren for å åpne den nyopplagte “New.c ”-fil.

Etter at filen er åpnet i redaktøren, har vi lagt til koden nedenfor. Koden inneholder de nødvendige bibliotekene som er inkludert i den for sokket programmering og input-output-strøm. Helt i starten av en kode har vi definert banen til en stikkontakt som "Home" -katalogen til Ubuntu 20.04. Hovedmetoden er initialisert med en heltallvariabel og karaktertype array peker som et argument. En heltallvariabel “S” er blitt erklært. En variabel med strukturtype for sokkeladressen er initialisert. Funksjonen “Socket” har blitt brukt til å initialisere en stikkontakt i Linux -systemet og en sokkelstrøm med 0 størrelser. All informasjon om stikkontakten er lagret i beskrivelsen “S”. Hvis størrelsen på en stikkontakt tilsvarer “-1”, må den kaste en feilmelding mens du avslutter sammenstillingen av en kode.

Funksjonen "memset" har blitt brukt her for å binde den lokale sokkeladressen med størrelsen på en struktur definert allerede. Familien til en systemkontaktadresse er definert. Etter det har systemanropet Strncpy blitt brukt her for å kopiere sokkeladressen til en strukturert bane og finne størrelsen på en strukturert bane. Nå kommer hoveddelen. Vi har brukt "hvis" -uttalelsen her for å bruke Bind () systemanrop i det. Bind -systemanropet har hentet sokkelbeskrivelsen, fått strukturadressen og binder den med den lokale sokkeladressen, og få størrelsen på en socket -adressebane. Hvis størrelsen på en strukturell adresse tilsvarer “-1”, vil den skrive ut en feil “bind” sammen med en innebygd feilmelding fra systemet ved å bruke "exit_failure" -funksjonen ". Koden er lagret etter det.

For det første, kompiler koden din med en "GCC" -kompilator som brukes til C -språk i Linux -systemet. Etter det, utfør filen med “a.ut ”spørring i konsollen. Utgangen kaster et unntak om at adressen allerede er i bruk. Det indikerte adressen "Home" -katalogen til Linux -systemet, som alltid er i brukernes bruk.

La oss åpne det samme “nye.c ”-fil for å gjøre en liten endring i den. Vi må bruke den samme “Nano” -forespørselen i konsollapplikasjonen for å åpne den i en redaktør for redigering. Etter at filen er åpnet på riktig måte, har vi endret sokkelbanen som er definert øverst i koden. Vi har endret veien til "bilder" fra "hjem" for å få et annet resultat.

Etter samlingen ble filen utført og fikk en annen melding. Denne meldingen indikerer også feilen "tillatelse nektet" for å få tilgang til banen "bilder".

Konklusjon:

Så dette handlet om Bind () systemanrop i C i Linux -operativsystemet. Vi har gitt en kort forklaring av socket -programmering. Sørg for å gå gjennom Linux -manualen for en klar forståelse.