linux重启的神奇数字的目的是什么?

时间:2013-09-02 22:28:22

标签: linux reboot

在Linus Torvalds的维基百科页面上,它声明:

'Linux内核的重启系统调用接受它们的出生日期(用十六进制表示)作为魔术值'。

Linux重启功能的文档显示它需要两个魔术数字,'magic'和'magic2'也需要重启。

这些神奇数字的目的是什么?为什么没有它们就能运行这个功能呢?

由于

1 个答案:

答案 0 :(得分:10)

快速谷歌你的问题得出答案;

http://www.eeggs.com/items/44291.html

为了防止reboot()系统调用正在进行 无意中调用,你必须在前两个参数中传递一对魔术值。第一个魔术值是0xfee1dead。第二个神奇的价值 是其中之一:

$ grep LINUX_REBOOT_MAGIC include/linux/*.h
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC1 0xfee1dead
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2 672274793
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2A 85072278
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2B 369367448
include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2C 537993216

这些是对Linus具有重要意义的日期;暗示 你可以使用perl将它们转换成日期:

$ perl -e 'print localtime(672274793). "\n";'

Sun Apr 21 18:59:53 1991

这是Linus第一次开始编写Linux的日期。其他日期的重要性留给读者练习; - )