Mknod eksempel i C

Mknod eksempel i C

Et navngitt rør noen ganger omtalt som en FIFO, er en måte for inter-prosessinteraksjon i databehandling. Det er en Linux -versjon av det klassiske røroppfatningen. Et tradisjonelt rør er "navnløs" og varer bare omtrent så lenge prosedyren gjør. På den annen side kan et navngitt rør vare så lenge systemet er i drift, selv om prosessen ikke lenger er aktiv. Hvis det ikke lenger er nødvendig, kan det fjernes. Et navngitt rør vises vanligvis som en fil, og prosesser kobles til den for interprosessinteraksjon.

En FIFO -fil er en type lokal lagringsfil som lar to eller flere prosesser samhandle med hverandre ved å lese og skrive til og fra den. Den viktigste ulempen med rør er at de bare kan brukes ved en prosess, som kan ha både lesere og forfattere eller prosesser som bruker den samme filbeskrivelseslisten; Som et resultat har rør en stor ulempe: de kan ikke passere data på tvers av prosesser som ikke er relatert. Dette er som de ikke deler en filbeskrivende tabell. Imidlertid, hvis rørene får navn, kan de leses og skrives akkurat som alle andre filer. Prosessene trenger ikke en gang å koble til.

Navngitte rør er fifo, jeg.e. Først inn, først ut rør. Skallet kan brukes til å generere FIFOS. De kan imidlertid gjøres med C -programmeringen ved å bruke MKNOD () -systemanropet. Modealternativet bestemmer tillatelsene som skal brukes, så vel som typen node som vil bli generert. Det burde være en bitvis eller forbindelse av en av filtypene gitt nedenfor og den nye nodens privilegier. Prosessens Umask endrer tillatelsene som vanlig: Tillatelsene til den genererte noden. Hvis mknod () lykkes, returnerer den null; Ellers returnerer den -1.

Syntaks

int mknod (const char *nameOfpath, mode_t mode, dev_t dev);

Pathname du bruker for filen er banenavnet. Et sett med biter som beskriver filtypen og tilgangsprivilegiene du har tenkt å bruke, er kjent som 'Mode'. S_IFDIR, som brukes til å konstruere en katalog, og S_IFIFO, som brukes til å etablere en FIFO, er de eneste tillatte filtypene. Det meste av tiden blir Dev “ignorert.”

Eksempel

Etter å ha forklart det grunnleggende konseptet og syntaksen til MKNOD () systemanrop på C -programmeringsspråk, har vi definert et eksempel for brukerens forståelse. Vi implementerer vår eksempelkode i Ubuntu 20.04 Linux -operativsystem med en GCC -kompilator for kodeutførelse og kompilering. Vi har brukt Nano -kommandoen i skallet for å lage filen. For å utføre et eksempel på C -språk, har vi brukt “.C ”Fil Extension.

La oss utføre den oppførte kommandoen nedenfor i konsollen til Ubuntu 20.04 Linux operativsystem for filoppretting.

$ nano w.c

I vårt tilfelle er filnavnet “w.c ”, kan du også endre det. Nå vil filen bli opprettet og åpnes i GNU -redaktøren. Du må skrive skriptet som vises i det nedenfor-tilknyttede bildet.

Skriptet kan endres i henhold til arbeidet ditt, men for dette formålet må du forstå dette grunnleggende eksemplet fullt ut. Standard filbeskrivelsen for et program for å skrive advarselsmeldinger er styrt, ofte kjent som standardfeil. Feilen skrives ut til utgangsskjermen eller vindusterminalen ved hjelp av styring. Styret har vært en av kommandoutgangene, lik stdout, som ofte logges andre steder. S_irusr er en posix makrokonstant funnet i sys/stat. h. Brukeren leser tillatelsesbit er det den heter. Prefikset S_ RUSRs kan referere til statusen, for eksempel lesing av brukeren. S_irusr er en posix makrokonstant funnet i sys/stat. h. Brukeren Read Access Bit er det den heter. Prefikset S_ RUSRs kan referere til statusen, for eksempel lesing av brukeren. Vi ønsker å gi brukeren lese og skrive tilgang i denne situasjonen. Som et resultat setter vi modus til S Irusr | S iwusr | S ififo. Dev blir bekreftet hvis filtypen er S_IFCHR eller S_IFBLK; Imidlertid blir det ignorert.

Som et resultat brukte vi 0 som parameter. Perror () -metoden returnerer en standard feilmelding som beskriver den siste feilen som oppstår mens du kaller en system eller bibliotekfunksjon. Etter å ha skrevet og forstått skriptet, må du lukke filen og bare komme tilbake til konsollen. La oss utføre kommandoen nedenfor i Ubuntu 20.04 Linux operativsystemkonsoll for skriptsamling og utførelse.

$ gcc w.c
$ ./en.ute

Ved å se på det ovennevnte bildet, kan du enkelt identifisere at det ikke kommer noen feil ved sammenstilling. Den forventede utgangen kan også sees på skjermen.

Konklusjon

Denne artikkelen handlet om mknod () systemanrop på programmeringsspråk. Vi har prøvd vårt beste for å opplyse deg om grunnleggende bruk av MKNOD () -systemanropet. Syntaksen til MKNOD () systemanropet er forklart for brukerforståelse. Eksemplet som brukes i denne guiden er veldig enkelt, og nybegynnere kan også forstå i første gang. Jeg håper denne artikkelen vil veilede deg når du prøver å bruke MKNOD () Systemanrop på C -programmeringsspråk.