Dav*_*e K 13 c++ linux reboot qt4 suid
我有一个Qt 4 GUI,我需要在下拉菜单中有一个选项,允许用户选择重新启动计算机.我意识到这可能看起来不太重要,能够以其他方式重新启动计算机,但选择需要留在那里.我尝试使用system()来调用以下内容:
而且所有这些都是因为
reboot: must be superuser打印.使用system()直接调用reboot会做同样的事情.我并不特别喜欢使用system()来做这件事,但它似乎是最直接的选择.
如何从GUI重启系统?
该程序reboot在Linux程序员手册中有所描述.在glibc下,您可以传递RB_AUTOBOOT宏常量来执行重新启动.
请注意,如果reboot之前没有调用sync,则数据可能会丢失.
在Linux中使用glibc:
#include <unistd.h>
#include <sys/reboot.h>
sync();
reboot(RB_AUTOBOOT);
Run Code Online (Sandbox Code Playgroud)
小智 7
在Linux中:
#define LINUX_REBOOT_CMD_POWER_OFF 0x4321fedc
sync();
reboot(LINUX_REBOOT_CMD_POWER_OFF);
Run Code Online (Sandbox Code Playgroud)
您是否尝试过使用 gksudo 运行 shell 脚本?就像是
gksudo shutdown -r
Run Code Online (Sandbox Code Playgroud)
运气好的话,应该会弹出一个模式对话来获取用户凭据。