reboot (8) ( FreeBSD man: Команды системного администрирования )
reboot (8) ( Linux man: Команды системного администрирования )
НАЗВАНИЕ
reboot - перезагружает систему и разрешает/запрещает использование
клавиш Ctrl-Alt-Del для перезагрузки
СИНТАКСИС
В libc4 и libc5 библиотечный и системный вызовы идентичны;
в ядрах версии 2.1.30 и последующих есть символьные имена
LINUX_REBOOT_*, относящиеся к константам, а также появился
четвертый параметр
int reboot(int magic, int magic2, int flag, void *arg);
В glibc некоторым константам присвоены символьные имена RB_*,
а библиотечный вызов является 1-аргументной оболочкой трехаргументного
системного вызова:
Функция
reboot
перезагружает систему или разрешает/запрещает использование для
перезагрузки специального сочетания клавиш (по умолчанию это
Ctrl-Alt-Delete; это сочетание можно изменить при помощи
loadkeys(1)).
Системный вызов вернет ошибку (EINVAL), если
magic
не равен LINUX_REBOOT_MAGIC1 (т.е., 0xfee1dead) и
magic2
не равен LINUX_REBOOT_MAGIC2 (т.е., 672274793).
Однако, в версии 2.1.17 ядра и более поздних в качестве значения
magic2
можно использовать LINUX_REBOOT_MAGIC2A (т.е., 85072278),
а в версии 2.1.97 и более поздних - LINUX_REBOOT_MAGIC2B (369367448);
шестнадцатеричные значения этих констант говорят сами за себя.
Параметр
flag
может принимать следующие значения:
LINUX_REBOOT_CMD_RESTART
(RB_AUTOBOOT, 0x1234567).
На консоль выводится сообщение `Restarting system.', и сразу выполняется
перезагрузка системы.
Если вызову этой функции не предшествует команда
sync(2),
то данные будут потеряны.
LINUX_REBOOT_CMD_HALT
(RB_HALT_SYSTEM, 0xcdef0123 версии 1.1.76 ядра и более поздних).
На консоль выводится сообщение `System halted.', и система останавливается.
Управление передается монитору в ПЗУ, если таковой имеется.
Если вызову этой функции не предшествует
sync(2),
то данные будут потеряны.
LINUX_REBOOT_CMD_POWER_OFF
(0x4321fedc в ядре версии 2.1.30 и более поздних).
На консоль выводится сообщение 'Power down.', система останавливается,
и у системы отключаются все источники питания, если это возможно.
Если вызову этой функции не предшествует
sync(2),
то данные будут потеряны.
LINUX_REBOOT_CMD_RESTART2
(0xa1b2c3d4; версия ядра 2.1.30 и более поздние).
На консоль выводится сообщение `Restarting system with command '%s'', и
немедленно выполняется перезагрузка системы (с использованием командной строки,
заданной в
arg).
Если вызову этой функции не предшествует
sync(2),
то данные будут потеряны.
LINUX_REBOOT_CMD_CAD_ON
(RB_ENABLE_CAD, 0x89abcdef).
Разрешить использование сочетания клавиш для перезагрузки.
Это означает, что сочетание клавиш CAD приведет к немедленному
выполнению LINUX_REBOOT_CMD_RESTART.
LINUX_REBOOT_CMD_CAD_OFF
(RB_DISABLE_CAD, 0).
Запретить использование сочетания клавиш для перезагрузки системы.
Сочетание клавиш CAD приведет к тому, что
init (процесс 1) получит сигнал SIGINT, после чего этот процесс может
произвести все необходимые действия (послать сигналы процессам,
выполнить команду sync, перезагрузиться).
Эту функцию может вызывать только суперпользователь.
Конкретное действие описанных выше команд зависит от архитектуры системы.
Что касается i386, то дополнительный аргумент в данное время
не работает (2.1.122), а тип перезагрузки можно задать с помощью
командной строки ядра `reboot=...', определив, будет ли перезагрузка "горячей"
или "холодной", а также выполнить ее при помощи процессора или BIOS.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При удачном завершении вызова возвращаемое значение равно нулю. При ошибке возвращается
-1, а переменной
errno
присваивается номер ошибки.
НАЙДЕННЫЕ ОШИБКИ
EINVAL
Неправильны "волшебные" числа или параметр flag.
EPERM
Несуперпользователь пытается выполнить функцию
reboot.
СООТВЕТСТВИЕ СТАНДАРТАМ
reboot
это функция, специфичная для Linux. Не рекомендуется
использовать ее в программах, которые должны быть переносимыми
в другие системы.