滚动你自己的初始化:如何关闭/重新启动?

滚动你自己的初始化:如何关闭/重新启动?

看完之后这个答案,我认为在 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-pythonlinuxGRUB 配置中的行。有用。

所以我现在想知道......如何使用自制的 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)

相关内容