Scroll to navigation

REBOOT(2) Linux-Programmierhandbuch REBOOT(2)

BEZEICHNUNG

reboot - Neustart oder Strg-Alt-Entf ein-/ausschalten

ÜBERSICHT

/* 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 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 schlägt (mit dem Fehler EINVAL) fehl, 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

Wird reboot() in einem vom ursprünglichen PID-Namensraum verschiedenen Namensraum mit einem der nachfolgend aufgeführten Werte aufgerufen, dann führt es seit Linux 3.4 einen »Neustart« dieses Namensraumes durch: der »init«-Prozess des PID-Namensraums wird sofort mit den in pid_namespaces(7) beschriebenen Effekten beendet.

Die Werte, die in cmd beim Aufruf von reboot() übergeben werden können, sind in diesem Fall die folgenden:

LINUX_REBOOT_CMD_RESTART, LINUX_REBOOT_CMD_RESTART2
Der »init«-Prozess wird beendet und wait(2) im Elternprozess berichtet, dass das Kind mit einem Signal SIGHUP getötet wurde.
LINUX_REBOOT_CMD_POWER_OFF, LINUX_REBOOT_CMD_HALT
Der »init«-Prozess wird beendet und wait(2) im Elternprozess berichtet, dass das Kind mit einem Signal SIGINT getötet wurde.

Für andere Werte in cmd liefert reboot() -1 zurück und errno wird auf EINVAL gesetzt.

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 innerhalb seines Benutzernamensraums benötigt.

KONFORM ZU

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

SIEHE AUCH

systemctl(1), systemd(1), kexec_load(2), sync(2), bootparam(7), capabilities(7), ctrlaltdel(8), halt(8), shutdown(8)

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.16 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 <c.leick@vollbio.de> und Helge Kreutzmann <debian@helgefjell.de> 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 <debian-l10n-german@lists.debian.org>.

15. September 2017 Linux