reboot(2) Neustart oder Strg-Alt-Entf ein-/ausschalten

ÜBERSICHT

/* Für Libc4 und Libc5 sind der Bibliotheks- und der Systemaufruf
   identisch. Seit Kernel-Version 2.1.30 gibt es die symbolischen
   Namen LINUX_REBOOT_* für die Konstanten und ein viertes
   Argument für den Aufruf: */

#include <unistd.h>
#include <linux/reboot.h>

int reboot(int magic, int magic2, int cmd, void *arg);

/* Unter Glibc und der meisten alternativen Libcs (darunter Uclibc,
   Dietlibc, Musl und einige andere) haben einige beteiligte Konstanten
   symbolische RB_*-Namen bekommen und der Bibliotheksaufruf ist ein
   Ein-Argument-Wrapper für die drei Argumente des Systemaufrufs: */

#include <unistd.h>
#include <sys/reboot.h>

int reboot(int cmd);

BESCHREIBUNG

Der reboot()-Aufruf startet das System neu oder schaltet den Tastendruck für den Neustart ein/aus (Strg-Alt-Entf, englisch CAD für Ctrl-Alt-Delete; er kann mittels loadkeys(1) geändert werden).

Dieser Systemaufruf wird (mit EINVAL) fehlschlagen, außer wenn magic gleich LINUX_REBOOT_MAGIC1 (0xfee1dead) und magic2 gleich LINUX_REBOOT_MAGIC2 (672274793) ist. Seit 2.1.17 ist jedoch auch LINUX_REBOOT_MAGIC2A (85072278) und seit 2.1.97 außerdem LINUX_REBOOT_MAGIC2B (369367448) und seit 2.5.71 auch LINUX_REBOOT_MAGIC2C (537993216) als Wert für magic2 erlaubt. (Die hexadezimalen Werte dieser Konstanten haben eine Bedeutung.)

Das Argument cmd kann die folgenden Werte haben:

LINUX_REBOOT_CMD_CAD_OFF
(RB_DISABLE_CAD, 0). Strg-Alt-Delete wird ausgeschaltet. Dies bedeutet, dass das Tastenkürzel Strg-Alt-Delete veranlasst, dass ein SIGINT-Signal an Init (Prozess 1) gesandt wird, woraufhin dieser Prozess über die richtige Aktion entscheidet (möglicherweise: alle Prozesse beenden, Platten synchronisieren, Neustart).
LINUX_REBOOT_CMD_CAD_ON
(RB_ENABLE_CAD, 0x89abcdef). Strg-Alt-Delete wird eingeschaltet. Dies bedeutet, dass das Tastenkürzel Strg-Alt-Delete sofort die mit LINUX_REBOOT_CMD_RESTART verbundene Aktion veranlassen wird.
LINUX_REBOOT_CMD_HALT
(RB_HALT_SYSTEM, 0xcdef0123; seit Linux 1.1.76). Die Nachricht »System halted.« wird ausgegeben und das System wird angehalten. Falls vorhanden, wird die Steuerung an den ROM-Monitor übergeben. Wenn kein sync(2) vorausgeht, werden Daten verlorengehen.
LINUX_REBOOT_CMD_KEXEC
(RB_KEXEC, 0x45584543, since Linux 2.6.13). Einen Kernel ausführen, der vorher mit kexec_load(2) geladen wurde. Diese Option ist nur verfügbar, falls der Kernel mit CONFIG_KEXEC konfiguriert wurde.
LINUX_REBOOT_CMD_POWER_OFF
(RB_POWER_OFF, 0x4321fedc; seit Linux 2.1.30). Die Nachricht »Power down.« wird ausgegeben, das System wird gestoppt und jegliche Stromzufuhr unterbrochen, wenn möglich. Falls kein sync(2) vorausgeht, werden Daten verlorengehen.
LINUX_REBOOT_CMD_RESTART
(RB_AUTOBOOT, 0x1234567). Die Nachricht »Restarting system.« wird ausgegeben und es wird sofort ein Standard-Neustart ausgeführt. Wenn kein sync(2) vorausgeht, werden Daten verlorengehen.
LINUX_REBOOT_CMD_RESTART2
(0xa1b2c3d4; seit Linux 2.1.30). Die Nachricht »Restarting system with command '%s'« wird ausgegeben und sofort ein Neustart ausgeführt (unter Verwendung der in arg angegebenen Zeichenkette). Wenn kein sync(2) vorausgeht, werden Daten verlorengehen.
LINUX_REBOOT_CMD_SW_SUSPEND
(RB_SW_SUSPEND, 0xd000fce1; seit Linux 2.5.18). Einen Kernel ausführen, der vorher mit kexec_load(2) geladen wurde. Diese Option ist nur verfügbar, falls der Kernel mit CONFIG_KEXEC konfiguriert wurde.

Nur der Superuser kann reboot() aufrufen.

Die genauen Auswirkungen der vorangehenden Aktionen hängen von der Architektur ab. Für die i386-Architektur bewirkt das zusätzliche Argument derzeit nichts (2.1.122), aber der Typ des Neustarts kann durch Kernel-Befehlszeilenargumente (»reboot=…«) festgelegt werden, um entweder einen Warm- oder Kaltstart entweder hart oder über das BIOS durchzuführen.

Verhalten innerhalb von PID-Namensräumen

Seit Linux 3.4 bewirkt dieser Aufruf, wenn reboot() von einem anderen als dem ursprünglichen PID-Namensraum (siehe pid_namespaces(7)) aufgerufen wurde, dass ein Signal an den »init«-Prozess gesandt wird. LINUX_REBOOT_CMD_RESTART und LINUX_REBOOT_CMD_RESTART2 bewirken, dass ein SIGHUP-Signal gesandt wird, LINUX_REBOOT_CMD_POWER_OFF und LINUX_REBOOT_CMD_HALT führen zu einem SIGINT-Signal.

RÜCKGABEWERT

Für die Werte von cmd, die das System stoppen oder neu starten, gibt ein erfolgreicher Aufruf von reboot() nichts zurück. Für die anderen cmd-Werte wird bei Erfolg Null zurückgegeben. Bei einem Fehler wird immer -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

EFAULT
Problem bei der Abfrage von Daten aus dem Adressraum des Benutzers unter LINUX_REBOOT_CMD_RESTART2.
EINVAL
falsche magische Zahlen oder cmd
EPERM
Der aufrufende Prozess verfügt nicht über ausreichende Privilegien, um reboot() aufzurufen. Die Capability CAP_SYS_BOOT wird benötigt.

KONFORM ZU

reboot() ist Linux-spezifisch und sollte nicht in portierbaren Programmen benutzt werden.

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.06 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Chris Leick <[email protected]> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <[email protected]>.