ÜBERSICHT
/* Für Libc4 und Libc5 sind der Bibliotheks- und der Systemaufrufidentisch. 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]>.