REBOOT(2)

NAZWA
reboot - przeładowanie systemu lub włączenie/wyłączenie Ctrl-Alt-Del

SKŁADNIA
Wywołania systemowe pod biblioteką libc4 i libc5 są identyczne, a od wersji jądra 2.1.30 istnieją symboliczne nazwy LINUX_REBOOT_* dla stałych oraz czwarty parametr wywołania:

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

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

Pod glibc niektóre stałe dostały nazy RB_*, a wywołanie biblioteczne jest jednoargumentową funkcją wywołującą 3-argumentową funkcję systemową:

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

int reboot(int flag);

OPIS
Wywołanie reboot() przeładowuje system albo włącza lub wyłącza kombinację klawiszy odpowiedzialną za przeładowanie systemu (nazywaną w skrócie CAD od domyślnej kombinacji Ctrl-Alt-Del, którą można zmienić przy pomocy loadkeys(1)).

To wywołanie systemowe się nie powiedzie (z kodem EINVAL), chyba że magic wynosi LINUX_REBOOT_MAGIC1 (czyli 0xfee1dead) i magic2 jest równe LINUX_REBOOT_MAGIC2 (czyli 672274793). Jednakże magic2 może przyjmować dodatkowe wartości: od wersji 2.1.17 - LINUX_REBOOT_MAGIC2A (czyli 85072278), od wersji 2.1.97 - LINUX_REBOOT_MAGIC2B (czyli 369367448), a od wersji 2.5.71 również LINUX_REBOOT_MAGIC2C (czyli 537993216). (Te szesnastkowe wartości powyższych stałych mają znaczenie). Parametr flag może przyjmować następujące wartości:

LINUX_REBOOT_CMD_RESTART
    (RB_AUTOBOOT, 0x1234567). Wypisywane jest komunikat "Restarting system.", a natychmiast po tym następuje przeładowanie systemu. Jeżeli nie wywołano wcześniej sync(2), niezapisane dane zostaną utracone.

LINUX_REBOOT_CMD_HALT
    (RB_HALT_SYSTEM, 0xcdef0123; od wersji 1.1.76). Wypisywane jest komuniat "System halted.", a system jest zarzymywany. Kontrola jest przekazywana do monitora ROM, jeżeli istnieje. Jeżeli nie wywołano wcześniej sync(2), niezapisane dane zostaną utracone.

LINUX_REBOOT_CMD_POWER_OFF
    (0x4321fedc; od wersji 2.1.30). Wypisywany jest komunikat "Power down.", system jest zatrzymywany i jeżeli jest to możliwe, zasilanie jest odłączane. Jeżeli nie wywołano wcześniej sync(2), niezapisane dane zostaną utracone.

LINUX_REBOOT_CMD_RESTART2
    (0xa1b2c3d4; od wersji 2.1.30). Wypisywany jest komunikat "Restarting system with command '%s'" i natychmiast po nim system jest przeładowywany (używając polecenia podanego w argumencie arg) . Jeżeli nie wywołano wcześniej sync(2), niezapisane dane zostaną utracone.

LINUX_REBOOT_CMD_CAD_ON
    (RB_ENABLE_CAD, 0x89abcdef). CAD jest włączony, co oznacza, że naciśnięcie klawiszy CAD wywoła od razu akcję skojarzoną z LINUX_REBOOT_CMD_RESTART.

LINUX_REBOOT_CMD_CAD_OFF
    (RB_DISABLE_CAD, 0). CAD jest wyłączony, co oznacza, że naciśnięcie kombinacji klawiszy CAD wyśle procesowi init (procesowi nr 1) sygnał SIGINT i ten proces zdecyduje, jaką akcję wykonać (być może: zabicie wszystkich procesów, sync, restart).

Tylko administrator może używać tej funkcji.

Dokładny wynik powyższych akcji zależy od architektury komputera. Obecnie (2.1.122) dodatkowy parametr nie ma żadnego znaczenia dla architektury i386, jednakże typ restartowania systemu może być określony w argumentach linii poleceń jądra ("reboot=...") jako restart albo ciepły, albo zimny oraz albo twardy, albo przez BIOS.

WARTOŚĆ ZWRACANA
W przypadku powodzenia zwracane jest zero. W razie wystąpienia błędu zwracane jest -1 i ustawiana jest odpowiednia wartość zmiennej errno.

BŁĘDY

EFAULT
    Problem pobierania danych z przestrzeni użytkownika w wypadku wywołania LINUX_REBOOT_CMD_RESTART2.

EINVAL
    Niepoprawne liczby magiczne lub parametr flag.

EPERM
    Proces wywołujący nie ma odpowiednich uprawnień, aby wywołać reboot(); wymagane jest posiadanie przywileju CAP_SYS_BOOT.

ZGODNE Z
Funkcja reboot() jest specyficzna dla Linuksa i nie powinna być używana w programach, które mają działać pod różnymi systemami.

ZOBACZ TAKŻE
sync(2), bootparam(7), capabilities(7), ctrlaltdel(8), halt(8), reboot(8)