Etter Ubuntu 20.04 Vellykket pålogging, du må starte skallet til Ubuntu 20.04 System først etter påloggingen. Så prøv ut snarveien “Ctrl+Alt+T” ganske enkelt på skrivebordsskjermen. Den vil lansere terminalskallet for deg på noen sekunder. Sørg for å oppdatere systemet ditt ved å bruke den treffende pakken til systemet ditt. Etter det må du utføre "berørings" -instruksjonen sammen med filnavnet du vil generere, jeg.e., For å opprette C -filen via skallet. Denne nyopprettede filen finner du i "hjemme" -mappen i systemets filutforsker. Du kan prøve å åpne den med “tekst” -redigereren for å lage kode i den. En annen måte å åpne den i skallet på er å bruke “GNU Nano” -redigereren ved å bruke nøkkelordet “Nano” med et filnavn som demonstrert under.
Eksempel 01:
Vi har startet koden vår i “Nano” -redaktøren ved å inkludere noen nødvendige C -overskrifter. Disse overskriftene er kanskje de vanligste overskriftene som “stdio.H ”,“ Unistd.H ”, og“ Stdlib.h ”. Annet enn det, den viktigste overskriftenfilen "Signal.H ”er lagt til for å bruke signalhåndteringsfunksjonene i C -kode. Alt arbeidet er gjort i dette programmets hovedmetode (). Så etter at vi har startet metoden, har vi initialisert noen signalkonstruksjonsvariabler ved bruk av “sigset_t” -objektet, i.e., S, OS og PS. "S" står for signal, "OS" står for et originalt signalsett, og "PS" står for et ventende signalsett.
"Sigemptyset" har brukt "S" -konstruksjonen for å initialisere eller erklære en signalmaske og se bort fra alle signalene. Etter dette er "Sigadddset" -funksjonen blitt brukt til å legge til det initialiserte signalet "S" til det spesifiserte Sigint -signalsettet. Sigint -signalbehandlerrutinen refererer til “Ctrl+C”, i.e., avbryter karakter. Det vil stoppe utførelsen av den nåværende prosessen og komme tilbake til hovedsløyfen.
Nå kommer SigProcMask -funksjonen her ved hjelp av tre parametere. SIG_BLOCK -parameteren viser at alle signalene som finnes i et signalsett "s" vil bli lagt til det gjeldende signalsettet. & S indikerer pekeren til et spesifikt signalsett som har blitt brukt til å endre signalmasken i henhold til “Sigint” -konstruksjonen. "OS" -parameteren peker mot signalsettet som lagrer signalmasken for en bestemt metode. Printf -setningen er her for å vise den gamle signalmasken til signalsettet. "Sigpending" -funksjonen er her for å lagre data angående signalene i signalsettet som venter. Printf -setningen er igjen her for å vise det ventende signalet som er satt på skallet ved hjelp av “PS” -konstruksjonen. "Kill" -metoden kom hit for å drepe den nåværende prosessen ved å bruke prosess -ID via "getpid ()" -funksjonen. Sigpending -funksjonen blir igjen kalt for å få de ventende signalene i settet, og Printf -setningen vil vise dem. SigProcMask -funksjonen bruker "SIG_UNBLOCK" forhåndsdefinerte sett for å fortsette å fjerne blokkering og heve funksjonen i den verserende listen. “S” signalsettet vil bli utgitt ved hjelp av signalmaske “OS.”
Sett sammen C-kodefilen din ved å bruke den viste beløpsinstruksjonen i skallet.
Filen din er utført. Det vil vise deg det gamle signalet som er satt på skallet, “OS.”Men ettersom signalene om sett“ S ”nå er blokkert, vil vi se at signalene mottar, men ventende og ikke utfører. Vi kan ikke drepe prosessen da behandlingen av signaler er blokkert. Endelig har vi gitt ut signalene.
Eksempel 02:
La oss se på et annet eksempel på "SigProcMask" -funksjonen er C for å blokkere og fjerne blokkering av det spesifikke signalsettet. Så vi har lagt til en ny fil og prøvd en ny kode. Først må du legge til de samme toppfilene i kodefilen, som vist nedenfor. Den brukerdefinerte “catcher” -funksjonen er her for å bare vise at vi er inne i denne funksjonen ved å bruke Printf-funksjonen.
Hovedutførelsen starter fra hoved () -funksjonen til koden vår. Den inneholder to argumenter. Først av alt har vi benyttet tidskonstruksjoner “S” for start og “F” for finish via 'TIME_T ”nøkkelordet. Strukturen Sigaction er erklært som "sakt" for å sette naturen for et signal for å gjøre noe. "Sigset_t" -konstruksjonen brukes til å erklære to signalsett, i.e., “NS” for et nytt sett og “OS” for gamle sett. Variabelen "DIF" er erklært. Først av alt brukes SigemptySet -funksjonen til å initialisere signalmasken for "SACT" -struktur og ekskludere alle signaler. SA_FLAGS -behandleren har blitt brukt til Bitmask of Sigaction og initialisert til null. "SA_Handler" har blitt brukt til å erklære "Catcher" -funksjonen som signalbehandler ved å bruke "SACT" Sigaction -objektet. Sigaction -funksjonen kalles her ved hjelp av Sigalrm for å angi alarmen for signalet “SACT” her.
"Sigemptyset" er blitt brukt på “NS” -signalet som er satt til å initialisere en signalmaske og ekskludere alle signalene. Sigadddset -funksjonen legger Sigalrm til “NS” -signalet. SigProcMask legger til “NS” -signalene til det gjeldende signalsettet. “OS” -signalsettet representerer signalmasken for en bestemt prosess. Starttiden er blitt notert og skrevet ut ved hjelp av “CTime ()” -funksjonen i Printf. Alarmen i 1 sekund er initialisert, og slutttiden er blitt notert. Forskjellen mellom finish og starttider er beregnet ved bruk av "diff -time" -funksjonen. Hvis forskjellen er mindre enn 10 sekunder, vil SigProcMask -funksjonen bruke “OS” -signalet for å erstatte den nåværende signalmasken for en bestemt prosess ved bruk av SIG_SETMASK. Den siste PRINTF -setningen er her for å vise tiden når et signalsett frigjøres for alarmer.
Etter å ha samlet og kjørt filen, viser den oss tiden da alarmsignalsettet er blokkert. Etter noen sekunder heter Catcher -funksjonen, og en annen uttalelse viser blokkeringstiden for alarmsignalet som skal frigjøres.
Konklusjon:
Denne artikkelen viser forklaringen angående SigProcMask -funksjonsbruk på C -språket. Vi har diskutert to korte og enkle eksempler for å illustrere arbeidet med SigProcMask -funksjonen sammen med andre signalfunksjoner. Vi håper at denne artikkelen vil være en bonus for hver bruker som er ny på signaler.