Начнем с того, что /sbin/reboot - это симлинк на /sbin/halt.
А далее код крайне прост, когда halt вызван как reboot включается вот такая переменная:
Далее в src/reboot.h:
В описании системного вызова на случай RB_AUTOBOOT имеется следующее:
Данная заметка попытка понять - ограничивается ли reboot посылкой сигнала init процессу или он несколько более сложен.
А далее код крайне прост, когда halt вызван как reboot включается вот такая переменная:
if (!strcmp(progname, "reboot")) do_reboot = 1;А чуть ниже вот такой код:
if (do_reboot) {Предифайн у нас означет следующее:
init_reboot(BMAGIC_REBOOT);
#define BMAGIC_REBOOT RB_AUTOBOOT
Далее в src/reboot.h:
#define init_reboot(magic) reboot(magic)А reboot - это уже системный вызов Linux (man 2 reboot).
В описании системного вызова на случай RB_AUTOBOOT имеется следующее:
LINUX_REBOOT_CMD_RESTART (RB_AUTOBOOT, 0x1234567). The message "Restarting system." is printed, and a default restart is performed immediately. If not preceded by a sync(2), data will be lost.А вот как работает reboot - дело отдельной статьи.
Данная заметка попытка понять - ограничивается ли reboot посылкой сигнала init процессу или он несколько более сложен.
Кажется,
ReplyDelete# /sbin/shutdown -r now
как-то побезопаснее будет.
Ну это по ситуации, по-моему, они уже давно делают тоже самое в той или иной мере.
ReplyDelete