4

在 Linus Torvalds 的维基百科页面上,它指出:

'Linux 内核的重启系统调用接受他们的出生日期(以十六进制写)作为魔法值'。

Linux 重启功能的文档显示它需要两个幻数,“magic”和“magic2”也重启。

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

谢谢

4

1 回答 1

13

快速搜索一下您的问题会得到答案;

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";'

1991 年 4 月 21 日星期日 18:59:53

这是 Linus 首次开始编写 Linux 的日期。其他日期的意义留给读者作为练习;-)

于 2013-09-02T23:35:10.140 回答