Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

alarm - Alarmuhr stellen

&pagelevel(4)&pagelevel

Definition

#include <signal.h>

unsigned int alarm(unsigned int sek);

alarm löst nach einer als Argument übergebenen Zeitspanne sek das Signal SIGALRM
beim aufrufenden Programm aus. SIGALRM entspricht der STXIT-Ereignisklasse RTIMER
(Intervallzeitgeber Realzeit). Falls das Signal nicht abgefangen wird (siehe auch signal),
wird das Programm mit exit(-1) beendet.
alarm-Aufrufe mit dem Wert 0 - alarm(0) - lösen keinen Alarm aus, sondern setzen die
Alarmuhr auf 0 und löschen noch nicht erledigte Alarmanfragen.

Returnwert

Restzeit in der Alarmuhr vor Ausführung des Alarmaufrufes.

Hinweise

Mehrere aufeinander folgende alarm-Aufrufe setzen die Alarmuhr jedes Mal neu.

Da die Alarmuhr einen 1-Sekunden-Takt hat, kann es beim Auslösen des Signals zu
Verschiebungen bis zu einer Sekunde kommen.

Wird das Signal abgefangen (siehe signal), kann sich das Wiederaufsetzen des unterbrochenen
Programmes (bzw. Basisprozesses) aus Prioritätsgründen verzögern.

Mit der Zuweisung i = alarm(0) stellen Sie die Alarmuhr ab und können zudem feststellen,
wieviel Zeit seit der letzten Alarmanforderung noch übrig gewesen wäre.

Beispiel

Folgendes Programm schickt ca. alle zwei Sekunden einen Stern zur Standardausgabe.

#include <stdio.h>
#include <signal.h>
void f(int sig)        /* Signalbehandlung für SIGALRM */
{
  printf("*\n");
  alarm(2);            /* Neu stellen der Alarmuhr; alle weiteren Sterne */
}
int main(void)
{
  signal(SIGALRM + SIG_PS, f);
  alarm(2);            /* Erster Stern */
  for(;;)
    ;
  return 0;
}

Siehe auch  signal, sleep