reboot - Neustart oder Strg-Alt-Entf ein-/ausschalten
Standard-C-Bibliothek (
libc,
-lc)
/* Seit Linux 2.1.30 gibt es die symbolischen Namen LINUX_REBOOT_*
für die Konstanten und ein viertes Argument für den Aufruf: */
#include <linux/reboot.h> /* Definition der LINUX_REBOOT_*-Konstanten */
#include <sys/syscall.h> /* Definition der SYS_*-Konstanten */
#include <unistd.h>
int syscall(SYS_reboot, int Magik, int Magik2, int Befehl, 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 <sys/reboot.h> /* Definition der RB_*-Konstanten */
#include <unistd.h>
int reboot(int Befehl);
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
Magik gleich
LINUX_REBOOT_MAGIC1 (0xfee1dead)
und
Magik2 gleich
LINUX_REBOOT_MAGIC2 (0x28121969) ist. Seit
Linux 2.1.17 ist jedoch auch
LINUX_REBOOT_MAGIC2A (0x05121996) und seit
Linux 2.1.97 außerdem
LINUX_REBOOT_MAGIC2B (0x16041998) und seit
Linux 2.5.71 auch
LINUX_REBOOT_MAGIC2C (0x20112000) als Wert für
Magik2 erlaubt. (Die hexadezimalen Werte dieser Konstanten haben eine
Bedeutung.)
Das Argument
Befehl 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.
Wird
reboot() in einem vom ursprünglichen PID-Namensraum
verschiedenen Namensraum mit einem der nachfolgend aufgeführten
Befehl-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
Befehl 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
Befehl liefert
reboot() -1
zurück und
errno wird auf
EINVAL gesetzt.
Für die Werte von
Befehl, die das System stoppen oder neu starten,
gibt ein erfolgreicher Aufruf von
reboot() nichts zurück.
Für die anderen
Befehl-Werte wird bei Erfolg Null
zurückgegeben. Bei einem Fehler wird immer -1 zurückgegeben und
errno gesetzt, um den Fehler anzuzeigen.
- EFAULT
- Problem bei der Abfrage von Daten aus dem Adressraum des
Benutzers unter LINUX_REBOOT_CMD_RESTART2.
- EINVAL
- falsche magische Zahlen oder Befehl
- EPERM
- Der aufrufende Prozess verfügt nicht über
ausreichende Privilegien, um reboot() aufzurufen. Die Capability
CAP_SYS_BOOT wird innerhalb seines Benutzernamensraums
benötigt.
reboot() ist Linux-spezifisch und sollte nicht in portierbaren Programmen
benutzt werden.
systemctl(1),
systemd(1),
kexec_load(2),
sync(2),
bootparam(7),
capabilities(7),
ctrlaltdel(8),
halt(8),
shutdown(8)
Die deutsche Übersetzung dieser Handbuchseite wurde von Chris Leick
<
[email protected]> und Helge Kreutzmann <
[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 die
Mailingliste
der Übersetzer