它具有重启Linux机器的root权限.一些桌面环境使用守护进程来解决这个问题….但我建议编辑sudoers文件
https://help.ubuntu.com/community/Sudoers for howto.基本上你会想要在没有密码的情况下运行restart命令 – 只有restart命令.
就像是:
ALL ALL=(ALL) NOPASSWD: /usr/sbin/shutdown
将允许机器上的任何用户重新启动它而不使用密码.您可能需要在系统命令中使用’sudo’作为’shutdown’的前缀,尽管它看起来像是以某种方式自动调用.如果这不够安全,您可以创建一个组,使您的程序作为该组运行,然后允许该组重新启动.
编辑:显然这可以用DBus完成(注意:我没有测试过这个):
dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Restart int32:0
这是因为dbus以root身份运行(或具有root权限),因此可以接受从非成熟进程重新启动的请求并对其执行操作.我仍然认为sudo方式更干净,维护此代码的任何人都是如此.