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

jam*_*ina 4 linux reboot

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

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

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

这些神奇数字的目的是什么?没有它们,为什么功能无法运行?

谢谢

Mik*_*uch 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
Run Code Online (Sandbox Code Playgroud)

这些是对Linus重要的日期; 提示您可以使用perl将它们转换为日期:

$ perl -e 'print localtime(672274793). "\n";'
Run Code Online (Sandbox Code Playgroud)

Sun Apr 21 18:59:53 1991

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

  • (2/2) 这些数字的含义更为平淡。当以十六进制表示时,它们分别等于“28121969”、“05121996”、“16041998”和“20112000”;其中第一个是莱纳斯·托瓦兹本人的出生日期,后三个分别是他的女儿帕特里夏、丹妮拉和塞莱斯特的出生日期。 (3认同)