![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| HP-UX HP-UX (Hewlett Packard Unix) is Hewlett-Packard eigen implementatie van het Unix-besturingssysteem, gebaseerd op System V. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Voeg de output van een query op een variabele te gebruiken in een andere zoekopdracht | hazno | Programmeren en Shell Scripting | 0 | 03-24-2009 08:52 PM |
| Mac OS X: Waarom je Mac wellicht niet de slaap-of verblijfplaats in de slaapstand | iBot | OS X Support RSS | 0 | 03-19-2009 10:50 PM |
| converting localtime naar unixtime | AshishK | UNIX for Advanced & Expert Gebruikers | 2 | 10-30-2007 10:22 |
| Perl + localtime () | Optimus_P | Programmeren en Shell Scripting | 3 | 07-09-2003 05:32 PM |
| slapen | Anna | UNIX voor Dummies Questions & Answers | 5 | 07-10-2001 11:52 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread |
Waardering:
|
Display Modes |
|
|
|
||||
|
Sleep & localtime zoekopdracht
Hoi,
Ik werk op HPUX toepassing en ik had een vraag over de slaap en localtime systeem oproep in HPUX. Hier is de code die we hebben: const uint32_t WAKE_INTERVAL_SEC (30 * 60); while (true) ( / / Find out what time it is time (& currentTime); / / Thread wakker te sluiten met de klok van 30 minuten dat wil zeggen als het op dit moment 9:20 wakker na 10 minuten, / / Als het op dit moment 9:05, wakker worden na 25 minuten. / / Bereken resterende aantal seconden in een half uur. sleepTime \u003d WAKE_INTERVAL_SEC - (currentTime WAKE_INTERVAL_SEC%); while (1) ( slaap (sleepTime); / / Do regulier werk tptr \u003d localtime (& currentTime); als (12 \u003d\u003d tptr-> tm_hour & & tptr-> tm_min <WAKE_INTERVAL_MIN) ( / / Noon werk aan de winkel ) ) Verwachte Gedrag: Als bedoeld in de bovenstaande code, verwachten we dat elk half uur, om wat werk worden gedaan, en indien dat tijdstip gebeurt te zijn tussen 12 en 12:30 ben daarom doen wij ook 's middags werken. Werkelijke Gedrag: Het merendeel van de tijd het werkt zoals verwacht. Maar een aantal keer, slaap lijkt een paar seconden afrit voor 12:30 uur en dus de logica niet en is de middag het werk. Idealiter zou ik verwachten dat de middag het werk voorwaarde om te mislukken, omdat draad is wakker om 12:30 en dus kan het niet satisify middag het werk staat. (Trace in het syslog blijkt dat regulier werk is begonnen om 12.30 uur, maar het inloggen zelf zou hebben wat tijd gekost en ik vermoed dat de slaap zou kunnen komen, vroeg wakker zijn) Vraag: - Kan de slaap wakker worden voor de geplande tijden (andere dan SIGALRM)? Zijn er nog andere omstandigheden waarin de slaap kon wakker te worden vóór de geplande tijd? - Kan localtime gebruikt ter vergelijking terugkeer verkeerde moment? - Is het mogelijk dat er enige tijd intern aanpassingen gedaan (kunnen worden voor de interne klok van driften, enz.) die resulteert in slaap ontwaken een seconde eerder dan verwacht of lokale tijd aan een vorm van aanpassing voor een of andere reden? Alle ingangen in dit verband zijn gewaardeerd. Thanks & Regards, NSV |
|
||||
|
Hallo Jim,
Bedankt voor het antwoord. Eigenlijk threads kan elk moment wakker te worden op basis van de planner, zodat het logisch was om de tijd de draad zodanig dient te slapen controleren of het in overeenstemming gebracht met intervallen van 30 minuten. Met groet, nsvora |
|
||||
|
Ik heb geprobeerd om dit duidelijk overbrengen:
Je kan niet garanderen hoe lang slapen is. U hebt toe te voegen sommige Slop (fudge factor) in uw seconde berekening een of andere manier, is het niet van plan uit te werken perfect elke keer - voorbeeld ervan uitgegaan dat u hebt POSIX conforme tijd - dwz., geen schrikkeljaar seconden.: Code:
calculate duration of sleep: time_t how_long_to_sleep=1800; how_long_to_sleep-= time(NULL) % 1800; sleep(!how_long_to_sleep ? 1800 : how_long_to_sleep); Code:
time_t now=time(NULL); now=now % 1800; if( now < 2 && now > 1797) // sleep period ended close enough else // sleep period is off by too much fi |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|