Sleep() funkcija C valodā

Sleep Funkcija C Valoda



Izstrādājot programmas, kurām nepieciešama lietotāja mijiedarbība, ir gadījumi, kad ir nepieciešams pielāgot sistēmas laikus, lai lietojumprogramma būtu lasāma un ērti lietojama.

Piemēram, ja mēs izstrādājam konsoles lietojumprogrammu, kurā mums jāinformē lietotājs par uzdevumiem, kas tiks izpildīti secīgi, informatīvajiem ziņojumiem ir jāpaliek saprātīgu laiku, lai lietotājam būtu laiks tos izlasīt, pirms tie tiek notīrīti un programma pāriet uz nākamo komandu.

Šajā Linuxhint rakstā jūs uzzināsit, kā izmantot miega () funkciju, lai radītu aizkavēšanos reāllaikā. Mēs parādīsim šīs funkcijas sintaksi un aprakstu, kā arī opcijas, ko nodrošina POSIX, lai radītu aizkavi, kuru daļas ir mazākas par sekundi. Pēc tam, izmantojot praktiskus piemērus, kodus un attēlus, mēs parādīsim, kā aizkavēt programmas izpildi un signālu ietekmi uz šo funkciju.








Funkcijas Sleep() sintakse C valodā



neparakstīts starpt Gulēt ( neparakstīts starpt sek )

Funkcijas Sleep() apraksts valodā C

Funkcija miega () aktivizē procesu vai pavedienu miega režīmā uz laiku sekundēs, kas norādīts ievades argumentā “sec”, kas ir neparakstīts vesels skaitlis. Kad funkcija 'Sleep()' tiek izsaukta, izsaukšanas process aizmigst, līdz tiek beidzies taimauts vai tiek saņemts signāls.



Šo funkciju bieži izmanto, lai reāllaika procesu izpildē ieviestu ilgu aizkavi, kas pārsniedz 1 sekundi. Kavējumiem, kas ir mazāki par 1 sekundi, POSIX nodrošina mikrosekundes izšķirtspējas funkciju usleep (), kas izmanto to pašu metodes izsaukumu kā miega (). Aizkavei, kas ir mazāka par 1 mikrosekundi, ir arī funkcija nanosleep() ar 1 nanosekundes izšķirtspēju, bet ar citu izsaukuma metodi, kur tā izmanto “timespec” struktūras kā ievades argumentus, lai iestatītu aizkaves laiku.





Ja funkcija sleep() ir patērējusi visu norādīto laiku, tā atgriež 0 kā rezultātu. Ja izpildi pārtrauc signāla pienākšana pirms norādītā laika beigām, tā atgriež atlikušo sekunžu skaitu līdz šim laikam.

Sleep() funkcija ir definēta galvenē “unistd.h”. Lai to izmantotu, mums šis fails ir jāiekļauj kodā šādi:



#include

Kā ieviest aizkaves procesā, izmantojot funkciju Sleep ()

Šajā piemērā mēs izveidojam taimeri, kas sastāv no bezgalīgas cilpas, kurā komandu konsolē izdrukājam ziņojumu “Pagājušais laiks”, kam seko procesa pagājušās sekundes. Katra no šīm cilpām tiek atkārtota ik pēc 2 sekundēm miega () funkcijas izraisītās aizkaves dēļ.

Lai to izdarītu, mēs paņemam tukšu failu ar paplašinājumu “.c” un pievienojam tajā galvenes “stdio.h” un “unistd.h”. Pēc tam mēs atveram tukšu main() funkciju un tajā definējam mainīgās sekundes tipa int, kuras izmantosim kā pagājušā laika skaitītāju.

Kad galvenes ir ievietotas un mainīgais ir deklarēts, mēs atveram bezgalīgu cilpu un izmantojam funkciju printf () tajā, lai parādītu ziņojumu un laika vērtību. Nākamajā rindā mēs palielinām laika mainīgo par 2 un pēc tam izsaucam funkciju sleep () ar vērtību 2 kā ievades argumentu. Tādā veidā šis cikls tiek atkārtots katru sekundi, un mēs iegūstam skaitītāju, kas ekrānā parāda pagājušo laiku. Tagad apskatīsim šīs lietojumprogrammas kodu. Apskatīsim pilnu šī piemēra kodu:

#include
#include

nederīgs galvenais ( )
{
starpt sekundes = 0 ;
kamēr ( 1 )
{
printf ( 'Pagājušais laiks: %i \n ' , sekundes ) ;
sekundes += 2 ;
Gulēt ( 2 ) ;
}

}

Tālāk mēs redzēsim attēlu ar šī koda apkopošanu un izpildi. Kā redzam, ik pēc 2 sekundēm programma uz ekrāna izdrukā pagājušās sekundes kopš procesa izpildes.

Signālu ietekme uz miega () funkciju

Šajā piemērā mēs vēlamies novērot signālu ietekmi uz procesu, kas tiek iemidzināts, izmantojot funkciju 'Sleep()'. Lai to izdarītu, mēs izveidojam vienkāršu lietojumprogrammu, kas sastāv no galvenās () funkcijas un signāla 36 apdarinātāja.

Funkcijas main() pirmajā rindā mēs deklarējam atlikušo int tipa mainīgo, kur saglabājam vērtību, ko atgriež funkcija sleep (). Pēc tam mēs izmantojam funkciju signal(), lai saistītu apstrādātāju ar 36. signālu. Nākamajā rindā mēs parādām procesa PID, ko pēc tam izmantojam, lai nosūtītu signālu no otrā apvalka uz procesu. Visbeidzot, mēs izsaucam funkciju miega () un iestatām tās ievades argumentu uz 60 sekundēm, kas ir pietiekami ilgi, lai nosūtītu signālu no otrā apvalka. Mēs nosūtām atlikušo mainīgo kā izejas argumentu uz miega ().

Apdarinātājs, kas ir pievienots signālam 36, sastāv no koda rindas, kurā funkcija printf() izdrukā ziņojumu “Atlicis laiks:”, kam seko vērtība, kas tiek atgriezta miega režīmā () brīdī, kad signāls pienāk procesam. Apskatīsim šī piemēra kodu.

#include
#include
#include
#include

nederīgs apdarinātājs ( starpt atlikušais ) ;

nederīgs galvenais ( )
{
starpt atlikušais ;
signāls ( 36 , apdarinātājs ) ;
printf ( 'Procesa ID: %i \n ' , getpid ( ) ) ;
atlikušais = Gulēt ( 60 ) ;
}

nederīgs apdarinātājs ( starpt atlikušais )

{
printf ( 'Atlikušais laiks: %i \n ' , atlikušais ) ;
}

Šis attēls, ko mēs redzam, parāda šī koda apkopošanu un izpildi:

Lai redzētu signālu ietekmi šajā procesā, mēs apkopojam šo kodu un palaižam to. Pēc tam no otrā termināļa mēs nosūtām signālu ar šādu sintaksi:

nogalināt - n signāla PID

Nākamais attēls, ko mēs redzam, parāda koda izpildi iepriekšējā konsolē un signāla, kas tiek nosūtīts no nākamās konsoles, ierašanās sekas. Kā redzat, signāls ir nomācis miega() funkcijas, pamodinot procesu:

Secinājums

Šajā Linuxhint rakstā mēs jums parādījām, kā izmantot miega () funkciju, lai procesu ieslēgtu miega režīmā uz noteiktu sekunžu skaitu. Mēs arī parādījām sintaksi, kā arī funkcijas aprakstu un izsaukšanas metodi.

Izmantojot praktiskus piemērus, koda fragmentus un attēlus, mēs jums parādījām, kā iemidzināt procesu un kas ietekmē signāla ierašanos miega procesā, izmantojot miega () funkciju.