Syntaks av SEM_OPEN 3 C -funksjonen
# sem_open (const char *navn, int oflag, usignert lang modus, usignert int -verdi);
Beskrivelse av Sem_open () -funksjonen
En lenke er laget mellom en definert semafor og et rammeverk ved å bruke SEM_Open () -metoden. Plasseringen oppnås ved bruk av SEM_Open () -funksjonen sammen med semaforbegrepet som gjør det mulig for systemet å referere til semaforen som tilsvarer den spesifiserte etiketten. Inntil semaforen er avsluttet med en SEM Close () -funksjon eller andre metoder for EXEC, kan den fremdeles brukes av funksjonen. Operasjonen til SEM_OPEN () -funksjonen bestemmer om semaforen er generert eller bare tilgjengelig, avhengig av Oflag -parameteren. Flaggelementene som er oppført i det følgende kan konfigureres i Oflag -parameteren:
O_Creat Flag:
Hvis en semafor ikke ville presentere ennå, er den etablert ved å bruke dette flagget. O_Creat har ingen innvirkning hvis semaforen er til stede og spesifisert, bortsett fra det som er nevnt i O_EXCL. En merket semafor er dannet i stedet hvis vi bruker SEM_Open () -funksjonen. 3. og fjerde parametere for O_Creat -attributtet er formatmodus T, dens innhold og datatype usignert heltall.
En omtrentlig verdi av dataene brukes til å konstruere semaforen. Semaforer må ha begynnelsesverdiene som er større enn eller tilsvarer SEM -verdien maks. Den effektive bruker -IDen til programmet er tildelt som semaforens unike ID. Enten er datamaskinens standard -ID eller rammens effektive gruppe -ID gitt som semaforens gruppe -ID.
Bortsett fra de som er konfigurert i systemets initialiseringsmaske for filformat, er autorisasjonsbyte til semaforen alle tilordnet verdien av argumentmodus. Virkningen er tvetydig når elementene i en modus i stedet for filtilgangsflaggene er gitt. Andre metoder kan koble til semaforen ved å påkalle SEM_Open () -funksjonen med en lignende verdi av tittelen. Etterpå blir semaforen kalt navn dannet av SEM_Open () -funksjonen inkludert O_Creat -flagget.
O_EXCL -flagg:
Hvis semafortittelen allerede eksisterer, nekter Sem_Open () om O_EXCL og O_Creat er spesifisert. Når det.
Utfallet er udefinerbart når O_EXCL og O_Creat er spesifisert. Effekten er udefinert hvis Oflag -variabelen inneholder flagg bortsett fra O_Creat og O_EXCL. En streng som spesifiserer et semafore -element er kilden til navneparameteren. Hvis verdien ligger i systemfilene og er tilgjengelig for metodene som bruker banenavnene som parametere ikke er gitt, oppfyller navneparameteren kravene til en banenavns formasjon. Det første elementet i navnet er en skråstrek (/), og ingen andre elementer i navnet kan inneholde skråstreker.
Den samme semaforen er gitt for hver påfølgende tilgang til SEM_OPEN () -funksjonen som en metode gjør det å ha den lignende navneverdien, forutsatt at det ikke ble laget noen argumenter til SEM_UNLINK () for en slik semafor. Koblinger til semaforen duplikater genererer inkonsekvente resultater. Uidentifiserte semaforer brukes med SEM_init () -metoden.
Returverdi
Funksjonen returnerer plasseringen av semaforen etter en vellykket utførelse. Hvis ikke, bør dette tildeles Errno for å identifisere feilen og generere resultatene fra SEM mislyktes. Overskriften inneholder en beskrivelse for begrepet SEM mislyktes. Hvis sem_open () mislykkes, gir den alltid verdien i form av SEM mislyktes.
Eksempel på SEM_OPEN 3 C -funksjon i Ubuntu
La oss se hvordan Sem_open () -funksjonen fungerer i Ubuntu. I begynnelsen av programmet importeres forskjellige biblioteker. Disse modulene er ansvarlige for å betjene de forskjellige funksjonene. Deretter definerer vi størrelsen på bufferen og setter den til 10. Vi initialiserer en variabel buffer og erklærer de forskjellige andre variablene. I neste trinn initialiserer vi motvariabelen sammen med disse to spesifiserte konstruktørene. Vi bruker for loop og definer tilstanden. Vi bruker også stundsløyfen.
Vi sjekker om verdien på tellervariabelen er lik størrelsen på bufferen ved å bruke en stundsløyfe. Men hvis verdien av telleren er mindre enn størrelsen på bufferen, vil det være et økning i verdien av telleren. Videre bruker vi søvn () -funksjonen for å holde utgangen en stund.
Vi bruker ugyldig konstruktør av forbrukeren. Innenfor dette bruker vi konstruktøren av "var" -variabelen. Vi initialiserer "elementet" -variabelen. Deretter bruker vi en stundsløyfe. Etter dette bruker vi IF -uttalelsen for å bekrefte om tellerens verdi er større enn 0 eller ikke. Hvis verdien av tellervariabelen er større enn 0, er det en reduksjon i verdien av telleren.
I denne fasen av koden erklærer vi de forskjellige variablene. Nå erklærer vi en konstruktør. Vi kaller sem_open () -metoden. Den inneholder fire forskjellige parametere. For å avslutte programmet bruker vi Pthread_Exit () -funksjonen.
Vi får dette følgende slags produksjon etter å ha kjørt overheadkoden:
Konklusjon
I denne redaksjonen snakket vi om bruken av SEM_Open 3 C -funksjonen i Ubuntu. Først har vi sett syntaksen til denne funksjonen. Deretter beskrev vi noen funksjoner i denne funksjonen. Etter alt dette utførte vi et program i Ubuntu som har SEM_Open () -funksjonen.