SINOPSIS
Para libc4 y libc5 la función de biblioteca y la llamada al sistema son idénticas, y desde la versión 2.1.30 del núcleo existen nombres simbólicos LINUX_REBOOT_* para las constantes y un cuarto argumento para la llamada:
#include <unistd.h>
#include <linux/reboot.h>
int reboot (int magico, int otro_magico, int flag, void *arg);
Bajo glibc se han asignado nombres simbólicos RB_* a algunas de las contantes involucradas y la función de biblioteca es un envoltorio de 1 argumento de la llamada al sistema de 3 argumentos:
#include <unistd.h>
#include <sys/reboot.h>
int reboot (int flag);
DESCRIPCIÓN
La llamada reboot rearranca el sistema o habilita/inhabilita la pulsación de rearranque (abreviada CAS, ya que por defecto es Ctrl-Alt-Supr; se puede cambiar usando loadkeys(1)).Esta llamada al sistema fallará (con EINVAL) a menos que magico sea igual a LINUX_REBOOT_MAGIC1 (esto es, 0xfee1dead) y otro_magico sea igual a LINUX_REBOOT_MAGIC2 (o sea, 672274793). Sin embargo, también se permiten como valores de otro_magico LINUX_REBOOT_MAGIC2A (esto es, 85072278) desde la versión 2.1.17 y LINUX_REBOOT_MAGIC2B (es decir, 369367448) desde la versión 2.1.97. (Los valores hexadecimales de estas constantes no tienen sentido.) El argumento flag puede tener los siguientes valores:
- LINUX_REBOOT_CMD_RESTART
- (RB_AUTOBOOT, 0x1234567). Se muestra el mensaje `Restarting system.' y se realiza inmediatamente un rearranque por defecto. Si no se precede por una llamada a sync(2) se perderán datos.
- LINUX_REBOOT_CMD_HALT
- (RB_HALT_SYSTEM, 0xcdef0123; desde la versión 1.1.76). Se muestra el mensaje `System halted.' y se detiene el sistema. El control se cede al monitor en ROM, si existe alguno. Si no se precede por una llamada a sync(2) se perderán datos.
- LINUX_REBOOT_CMD_POWER_OFF
- (0x4321fedc; desde la versión 2.1.30). Se muestra el mensaje `Power down.', se detiene el sistema y se apaga el sistema, si es posible. Si no se precede por una llamada a sync(2) se perderán datos.
- LINUX_REBOOT_CMD_RESTART2
- (0xa1b2c3d4; desde la versión 2.1.30). Se muestra el mensaje `Restarting system with command '%s'' y se realiza inmediatamente un rearranque (usando la cadena de orden dada en arg). Si no se precede por una llamada a sync(2) se perderán datos.
- LINUX_REBOOT_CMD_CAD_ON
- (RB_ENABLE_CAD, 0x89abcdef). Se habilita la combinación de teclas CAS. Esto significa que una pulsación CAS producirá inmediatamente la acción asociada a LINUX_REBOOT_CMD_RESTART.
- LINUX_REBOOT_CMD_CAD_OFF
- (RB_DISABLE_CAD, 0). Se inhabilita la combinación de teclas CAS. Esto significa que una pulsación CAS producirá el envío de la señal SIGINT a init (el proceso 1), y como consecuencia de esto este proceso puede decidir una acción apropiada (quizás, matar todos los procesos, llamar a sync y reiniciar).
Sólo el súperusuario puede utilizar esta función.
El efecto exacto de las acciones anteriores depende de la arquitectura. Para la arquitectura i386, el argumento adicional no hace nada por el momento (2.1.122), pero el tipo de rearranque se puede determinar mediante argumentos en la línea de órdenes del núcleo (`Reboot=...') para que sea bien `en caliente', bien `en frio', y bien hardware, bien a través de la BIOS.
VALOR DEVUELTO
En caso de éxito, se devuelve 0. En caso de error, se devuelve -1 y se pone un valor apropiado en errno.ERRORES
- EINVAL
- Números mágicos o flag incorrectos.
- EPERM
- Un usuario distinto de root intenta llamar a reboot.