The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Betriebssysteme > HP-UX
.
Google unix.com



HP-UX HP-UX (Hewlett Packard UniX) ist Hewlett-Packard-eigene Implementierung des Unix-Betriebssystem, basierend auf System V

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Fügen Sie die Ausgabe einer Abfrage an eine Variable, die in einem anderen Abfrage hazno Shell Programmierung und Scripting 0 03-24-2009 08:52 PM
Mac OS X: Warum Sie Ihren Mac nicht schlafen oder Aufenthalt im Sleep-Modus iBot OS X Support RSS 0 03-19-2009 10:50 PM
Umwandlung localtime zu unixtime AshishK UNIX für Fortgeschrittene und Experten 2 10-30-2007 10:22 AM
Perl + localtime () Optimus_P Shell Programmierung und Scripting 3 07-09-2003 05:32 PM
schlafen Anna UNIX for Dummies Questions & Answers 5 07-10-2001 11:52 PM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Suche diesen Thread Bewertung: Thread Rating: 1 votes, 4.00 average. Anzeige-Modi
  #1 (permalink)  
Old 06-29-2009
nsvora nsvora is offline
Registrierte Nutzer
  
 

Join Date: Jun 2009
Beiträge: 2
Sleep & localtime Abfrage

Hi,
Ich arbeite auf HPUX Anwendung und ich hatte eine Anfrage in Bezug auf die Sleep & localtime Systemaufruf in HPUX.
Hier ist der Code, den wir haben:

const uint32_t WAKE_INTERVAL_SEC (30 * 60);
while (true) (

/ / Finden Sie heraus, wie spät es ist
Zeit (& currentTime);

/ / Thread, um wakeup Uhr mit 30 Minuten, dh, wenn es derzeit 9.20 wakeup nach 10 Minuten,
/ / Wenn es derzeit 9.05, aufwachen nach 25 Minuten.
/ / Berechnen verbleibenden Anzahl von Sekunden in dieser halben Stunde.
sleepTime \u003d WAKE_INTERVAL_SEC - (currentTime WAKE_INTERVAL_SEC%);
while (1) (

sleep (sleepTime);

/ / Do reguläre Arbeit
tptr \u003d localtime (& currentTime);

wenn (12 \u003d\u003d tptr-> tm_hour & & tptr-> tm_min <WAKE_INTERVAL_MIN)
(
/ / Noon zu tun
)
)

Erwartetes Verhalten:
Wie im obigen Code, erwarten wir, dass jeder eine halbe Stunde, einige Arbeit zu tun, und wenn zu diesem Zeitpunkt passiert, werden zwischen 12 und 12:30 Uhr, dann tun wir auch mittags arbeiten.

Tatsächliche Verhalten:
Die meisten der Zeit es funktioniert wie erwartet. Aber einige Zeit, schlafen zu verlassen scheint, ein paar Sekunden vor 12.30 Uhr und so die Logik nicht und macht die Uhr arbeiten. Im Idealfall würde ich erwarten, dass die Uhr nicht Voraussetzung für die Arbeit, da Thread hat aufwachte um 12:30 Uhr und somit kann es nicht satisify mittags arbeiten Zustand. (Trace in syslog weist darauf hin, dass reguläre Beschäftigung hat um 12:30 Uhr, aber die Anmeldung selbst hätte sich etwas Zeit und ich vermute, Schlaf geweckt haben könnte früh)

Frage:
- Kann Schlaf aufwachen, bevor die geplante Zeit (andere als SIGALRM)? Gibt es noch andere Bedingungen, unter denen Schlaf aufwachen könnte vor dem geplanten Zeitpunkt?
- Kann localtime für den Vergleich zurück falschen Zeit?
- Ist es möglich, dass es einige Zeit Anpassungen erfolgt intern (kann für die innere Uhr Treibangeln etc), die Ergebnisse im Schlaf aufwachen eine zweite früher als erwartet oder lokaler Zeit damit eine Art der Anpassung aus irgendeinem Grund?

Alle Eingaben in diesem Bereich sind willkommen.

Thanks & Regards,
nSv
  #2 (permalink)  
Old 06-29-2009
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Ort: NM
Posts: 5759
Warum nicht mit cron oder zu planen Sie Ihren Code? Diese sind, Kommandos oder Scripte genau zum richtigen Zeitpunkt.

Plus, Schlafstörungen (1) ist nicht garantiert Schlaf genau eine Sekunde.
  #3 (permalink)  
Old 06-30-2009
nsvora nsvora is offline
Registrierte Nutzer
  
 

Join Date: Jun 2009
Beiträge: 2
Hi Jim,
Vielen Dank für die Antwort.
Eigentlich Threads aufwachen können jederzeit auf der Grundlage der Scheduler, so dass die Logik war, um die Zeit der Thread zu schlafen, so dass im Einklang mit seiner 30-Minuten-Intervallen.

Mit freundlichen Grüßen,
nsvora
  #4 (permalink)  
Old 07-01-2009
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Ort: NM
Posts: 5759
Ich habe versucht, um dies deutlich:

Sie können nicht garantieren, genau, wie lange schlafen. Sie haben, um einige Sloptank (fudge-Faktor) in der Sekunde Berechnung der einen oder anderen Weise, ist es nicht zu jeder Zeit perfekt - Beispiel setzt voraus, dass Sie POSIX kompatibel Zeit - dh., keine Schaltsekunden.:
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);
Zeit nach dem Test wakeup:
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
Sie können auch versuchen usleep (Wert), die feinere Granularität bei MS, aber auch Wert ist das Minimum. Es kann länger dauern. Zum Beispiel eine höhere Priorität als dieser Job ausgeführt wird.
Reply

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Aus
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 06:16 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0