![滚动你自己的初始化:如何关闭/重新启动?](https://linux22.com/image/45010/%E6%BB%9A%E5%8A%A8%E4%BD%A0%E8%87%AA%E5%B7%B1%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96%EF%BC%9A%E5%A6%82%E4%BD%95%E5%85%B3%E9%97%AD%2F%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%EF%BC%9F.png)
看完之后这个答案,我认为在 Python 上推出我自己的 init 会很有趣,所以我在/init-python
.
#!/usr/bin/python3
import os
import subprocess
# Make / writable!
subprocess.call(['/bin/mount', '-o', 'rw,remount', '/'])
# Became IPython (Now we're at it, get a good shell!)
os.execv('/usr/bin/ipython3', ['init'])
然后添加init=/init-python
到linux
GRUB 配置中的行。有用。
所以我现在想知道......如何使用自制的 init 关闭或重新启动我的系统?
答案1
可以用reboot
函数( man 2 reboot
)来完成。
import ctypes
libc = ctypes.cdll['libc.so.6']
RB_POWER_OFF = 0x4321fedc
RB_AUTOBOOT = 0x01234567
def shutdown():
libc.reboot(RB_POWER_OFF)
def reboot():
libc.reboot(RB_AUTOBOOT)