c + + signal håndtering

, signaler er de afbryder leveret til en proces, som de operationelle system, der kan afslutte et program for tidligt.du kan skabe en afbryder ved presning af ctrl + c på en unix, linux, mac os x eller vinduer system. der er signaler, som ikke kan være omfattet af programmet, men der er en følgende signaler, som du kan fange i dit program og kan træffe passende foranstaltninger på grundlag af signalet.disse signaler er defineret i c + + headerfilen < csignal >., signal beskrivelse sigabrt unormale afslutning af programmet, som f.eks. opfordringen til, afbryd, sigfpe en fejlagtig aritmetiske operation, som f.eks. en del af nul eller en operation, der er overfyldt.sigill påvisning af en ulovlig undervisning sigint modtagelsen af en interaktiv opmærksomhed signal.sigsegv handicappet adgang til oplagring.sigterm afslutning anmodning sendes til programmet.den signal() funktion:, c + + signal håndtering bibliotek indeholder funktion, signal til fælde uventede begivenheder.følgende er syntaks af signal() funktion:, ugyldige (* signal (int sig, ugyldige (* funktion) (int)) (int), at holde det enkelt, denne funktion modtager to argumenter: for det første argument som et heltal, som repræsenterer signal og andet argument som et fingerpeg om det signal, håndtering af funktion. lad os skrive en enkel c + + - program, hvor vi vil fange sigint signal ved hjælp af signal() funktion.det signal, som de ønsker at fange i dit program, du skal registrere det signal ved hjælp af signal, funktion og forbinde det med et signal, chef.undersøge følgende eksempel:,&#omfatter < iostream >&#omfatter < csignal > anvendelse af namespace std; tomrum signalhandler (int signum) (cout < < "afbryd signalet (< < signum < <"), der er modtaget. \\ n "; //rengøring og lukke her //indstille program udgang (signum)} int vigtigste () (//register signal sigint og signal kontaktperson signal (sigint, signalhandler); og (1) (cout < <" sove... "< og lt; endl., søvn (1)} tilbage 0}, når ovennævnte adfærdskodeks er udarbejdet og gennemført, giver følgende resultat:, gå i seng.gå til at sove...gå til at sove...nu, tryk ctrl + c - afbryder programmet, og de vil se, at dit program vil fange signal og ville komme ud ved at trykke noget som følger:, gå i seng.gå til at sove...gå til at sove...afbryder signalet (2), der er modtaget.den raise() funktion: du kan frembringe signaler fra funktion, raise(),, som tager et heltal signal nummer som argument, og som har følgende syntaks. int rejse (signal sig); her, sig, er at sende signalet nummer et af de signaler: sigint, sigabrt, sigfpe, sigill, sigsegv, sigterm, sighup.følgende er et eksempel, hvor vi rejse et signal internt ved hjælp af raise() funktion som følger:,&#omfatter < iostream >&#omfatter < csignal > anvendelse af namespace std; tomrum signalhandler (int signum) (cout < < "afbryd signalet (< < signum < <"), der er modtaget. \\ n "; //rengøring og lukke her //indstille program udgang (signum)} int vigtigste () (int i = 0; //register signal sigint og signal kontaktperson signal (sigint, signalhandler), mens (+) (cout < <" sove... "< < endl., hvis (i = = 3) (rejse (sigint)} søvn (1)} tilbage 0}, når ovennævnte adfærdskodeks er udarbejdet og gennemført, giver følgende resultat, ogkom ud, automatisk:, sove...gå til at sove...gå til at sove...afbryder signalet (2), der er modtaget.,



Previous:
Next Page:No