Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

getitimer, setitimer - lesen bzw. setzen

&pagelevel(4)&pagelevel

Definition

#include <sys/time.h>

int getitimer(int which, struct itimerval *value);

int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);

Beschreibung

Das System bietet jedem Prozess drei Intervall-Timer an, die in der Datei sys/time.h vereinbart werden. Der Aufruf getitimer() speichert den aktuellen Wert des Timers which in der Struktur, auf die value zeigt. Der Aufruf setitimer() setzt den Wert von which auf den Wert, der in der Struktur steht, auf die value zeigt; ist ovalue ungleich NULL, wird der vorherige Wert des Timers in der Struktur abgelegt, auf die ovalue zeigt.

Die Einstellung eines Timers wird durch die Struktur itimerval (siehe sys/time.h) definiert, welche mindestens die folgenden Komponenten enthält:

struct timeval   it_interval;    /* Uhrintervall */

struct timeval   it_value;       /* aktueller Wert*/

Wenn it_value ungleich null ist, wird die Zeit bis zum nächsten Ablauf des Timers angegeben. Wenn it_interval ungleich null ist, wird ein Wert angegeben, auf den it_value gesetzt wird, wenn der Timer abläuft. Wird it_value auf null gesetzt, so wird der Timer deaktiviert, unabhängig vom Wert von it_interval. Das Setzen von it_interval auf null deaktiviert den Timer nach seinem nächsten Ablauf (vorausgesetzt, dass it_value ungleich null ist).

Sind Zeitwerte kleiner als die Auflösung der Systemuhr, so werden diese auf die Auflösung der Systemuhr gerundet.

Jedem Prozess stehen drei Timer zur Verfügung, die über die folgenden Werte für which angesprochen werden:

ITIMER_REAL

dekrementiert in Echtzeit. Das Signal SIGALRM wird gesendet, wenn dieser Timer abläuft.

ITIMER_VIRTUAL

dekrementiert in der virtuellen Prozesszeit. Dieser Timer läuft nur, wenn der Prozess ausgeführt wird. Das Signal SIGVTALRM wird gesendet, wenn dieser Timer abläuft.

ITIMER_PROF

dekrementiert in virtuelle Prozesszeit, unabhängig von ITIMER_ VIRTUAL. Jedes Mal, wenn der Timer ITIMER_PROF abläuft, wird das Signal SIGPROF gesendet. Da dieses Signal Systemaufrufe des Prozesses unterbricht, müssen diejenigen Programme, die diesen Timer verwenden, darauf vorbereitet sein, die unterbrochenen Systemaufrufe zu wiederholen.

setitimer() und sleep() oder usleep() sollten nicht zusammen benutzt werden, da es zu unerwünschten Wechselwirkungen kommen kann, insbesondere meldet ein Aufruf von sleep() eine eigene Signalbehandlungsroutine an, so dass die Signalbehandlungsroutine des Anwenders nicht aktiviert wird.

Returnwert

0

bei Erfolg.

 

-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

setitimer() schlägt fehl, wenn gilt: 

 

EINVAL

Die Werte, auf die das Argument value zeigt, sind ungültig. (Für die Mikrosekunden muss eine nicht-negative Ganzzahl kleiner 1.000.000 angegeben werden, für die Sekunden eine nicht-negative Ganzzahl.)

 

getitimer() und setitimer() schlagen fehl, wenn gilt:


EINVAL

Der Parameter which wurde nicht erkannt 

Hinweis

Das Feld mit den Mikrosekunden darf keinen Wert enthalten, der gleich oder größer als eine Sekunde ist.

Siehe auch

alarm(), sleep(), ualarm(), usleep(), signal.h, sys/time.h.