REBOOT(2) Linux Programmeurs Handleiding REBOOT(2)

reboot - herstarten of in/uitschakelen van Ctrl-Alt-Del

/* Sinds kernel versie 2.1.30 zijn er symbolische namen LINUX_REBOOT_*
   voor constanten en een vierde argument in de aanroep: */
#include <unistd.h>
#include <linux/reboot.h>
int reboot(int magie, int magie2, int vlag, void *arg);
/* Onder glibc en de meeste alternatieve libc's (inclusief uclibc, dietlibc,
   musl en een aantal andere) hebben sommige van de constanten die hiermee te
   maken hebben symbolische namen RB_* gekregen, en de bibliotheek aanroep
   is een 1-argument wikkel om de systeem aanroep: */
#include <unistd.h>
#include <sys/reboot.h>
int reboot(int vlag);

De reboot() aanroep herstart het systeem, of schakelt de herstart toetsaanslag in/uit (afgekort CAD, omdat de standaard Ctrl-Alt-Delete is; hij kan veranderd worden met loadkeys(1)).

Deze systeem aanroep zal falen (met EINVAL) tenzij magie gelijk is aan LINUX_REBOOT_MAGIC1 (dat is: 0xfee1dead) en magie2 gelijk is aan LINUX_REBOOT_MAGIC2 (dat is: 672274793). Sinds 2.1.17 worden echter ook LINUX_REBOOT_MAGIC2A (dat is: 85072278), sinds 2.1.97 ook LINUX_REBOOT_MAGIC2B (dat is: 369367448) en sinds 2.5.71 ook LINUX_REBOOT_MAGIC2C (dat is, 537993216) toegestaan als waarde voor magie2. (De hexadecimale waardes van deze constanten hebben betekenis.)

Het vlag argument kan de volgende waardes hebben:

LINUX_REBOOT_CMD_CAD_OFF
(RB_DISABLE_CAD. CAD wordt uitgezet. Dit betekend dat de CAD toetsaanslag een SIGINT signaal zal veroorzaken dat gezonden zal worden naar het init (proces 1), waarna dit proces kan beslissen wat een juiste actie is (wellicht: stop alle processen, synchroniseer ("sync"), en herstart).
LINUX_REBOOT_CMD_CAD_ON
(RB_ENABLE_CAD, 0x89abcdef). CAD wordt gebruiksklaar gemaakt. Dit betekend dat de CAD toetsaanslag onmiddellijk de actie behorend bij LINUX_REBOOT_CMD_RESTART zal veroorzaken.
LINUX_REBOOT_CMD_HALT
(RB_HALT_SYSTEM, 0xcdef0123; sinds 1.1.76). Het bericht "System halted." wordt afgedrukt, en het systeem wordt gestopt. Controle wordt gegeven aan de ROM monitor, indien die bestaat. Als niet voorafgegaan werd door een sync(2), zullen gegevens verloren gaan.
LINUX_REBOOT_CMD_KEXEC
(RB_KEXEC, 0x45584543, vanaf Linux 2.6.13). Voer een kernel uit die eerder werd geladen met kexec_load(2). Deze optie is alleen beschikbaar als de kernel werd geconfigureerd met CONFIG_KEXEC.
LINUX_REBOOT_CMD_POWER_OFF
(RB_POWER_OFF, 0x4321fedc; sinds 2.1.30). Het bericht "Power down." wordt afgedrukt, het systeem wordt gestopt en alle voeding wordt losgekoppeld van het systeem als dat mogelijk is. Als niet voorafgegaan door sync(2), zullen gegevens verloren gaan.
LINUX_REBOOT_CMD_RESTART
(RB_AUTOBOOT, 0x1234567). Het bericht "Restarting system." wordt afgedrukt, en een standaard herstart wordt onmiddellijk uitgevoerd. Als niet voorafgegaan door een sync(2), zullen gegevens verloren gaan.
LINUX_REBOOT_CMD_RESTART2
(0xa1b2c3d4; sinds 2.1.30). Het bericht "Restarting system with command '%s'" wordt afgedrukt, en een herstart (met gebruik van het opdracht-string gegeven met arg) wordt onmiddellijk uitgevoerd. Als niet voorafgegaan door een sync(2), zullen gegevens verloren gaan.
LINUX_REBOOT_CMD_SW_SUSPEND
(RB_SW_SUSPEND, 0xd000fce1; sinds Linux 2.5.18). Het systeem wordt gestopt (in winterslaap) naar schijf. Deze optie is alleen beschikbaar als de kernel werd geconfigureerd met CONFIG_HIBERNATION.

Alleen de super-gebruiker mag reboot() gebruiken.

Het exacte gevolg van de bovenstaande acties hangt af van de architectuur. Voor de i386 architectuur doet het extra argument helemaal niets momenteel (2.1.122), maar het soort heropstart kan bepaald worden met een kernel opdracht-regel argument (`reboot=...'), het kan warm of koud zijn, en hard of door de BIOS.

Sinds Linux 3.4 als reboot() wordt aangeroepen vanuit een PID naamruimte anders dan de initiële PID naamruimte met een van de cmd waardes hieronder getoond, dan zal het een "herstart" van die naamruimte uitvoeren: het "init" proces van de PID naamruimte wordt meteen beëindigd, met de effecten zoals beschreven in pid_namespaces(7).

De waarden die kunnen worden gegeven in cmd bij het aanroepen van reboot() zijn in dit geval als volgt:

LINUX_REBOOT_CMD_RESTART, LINUX_REBOOT_CMD_RESTART2
Het "init" proces werd gestopt en wait(2) in het ouder proces rapporteert dat het kind werd gestopt met een SIGINT signaal.
LINUX_REBOOT_CMD_POWER_OFF, LINUX_REBOOT_CMD_HALT
Het "init" proces werd gestopt en wait(2) in het ouder proces rapporteert dat het kind werd gestopt met een SIGINT signaal.

Voor de andere cmd waarden geeft reboot() -1 terug en wordt errno gezet op EINVAL.

Voor die waarden van cmd die het systeem stoppen of herstarten zal een succesvolle aanroep van reboot() niet terug keren. Voor de andere cmd waarden wordt nul terug gegeven bij succes. In alle gevallen wordt -1 teruggegeven bij fouten en wordt errno gezet om de fout te melden.

EFAULT
Probleem bij het verkrijgen van gebruiker-ruimte data onder LINUX_REBOOT_CMD_RESTART2.
EINVAL
Verkeerde magische nummers of vlag.
EPERM
Het huidige proces heeft niet voldoende rechten om reboot() aan te roepen; de aanroeper moet de CAP_SYS_BOOT in zijn naamruimte hebben.

reboot() is Linux-eigen en zou niet gebruikt moeten worden in processen die overdraagbaar moeten zijn.

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

Deze pagina is onderdeel van release 5.11 van het Linux man-pages-project. Een beschrijving van het project, informatie over het melden van bugs en de nieuwste versie van deze pagina zijn op https://www.kernel.org/doc/man-pages/ te vinden.

De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.

Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.

22 maart 2021 Linux