从程序重启linux

H_s*_*red 5 c linux reboot

之前已经问过这个问题:如何从C++程序中重启Linux?

但是,没有一个答案似乎对我有用.

这是我的问题:

我有一个硬件上的程序.我可以以root用户身份登录并运行它而不会出现任何问题.但是,如果我以root priveleges身份登录为其他用户,程序执行正常,但不会重新启动.它只关闭当前的Telnet会话.

要重启,我已经习惯了system(reboot).到目前为止,我尝试过:

sync();
reboot(RB_POWER_OFF);
Run Code Online (Sandbox Code Playgroud)

execl("/sbin/reboot","reboot",NULL,NULL);
Run Code Online (Sandbox Code Playgroud)

无济于事.

(我不确定,如果我使用execl得当.这是我第一次使用它.如果我搞砸了,请纠正我).

任何帮助,将不胜感激.

编辑:

/data/local/sbin # cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
service:54zljpSAe:0:0:root:/root:/data/local/sbin/script
Run Code Online (Sandbox Code Playgroud)

如果我以服务身份登录,将运行"script".用户有一个列表选项可供选择.其中一个选项是运行上述程序.

编辑:

另外值得一提的是:脚本中的一个选项是重启系统.如果从脚本内部调用,它可以工作.但我想从程序中调用reboot.

wie*_*iak 2

首先,以“具有 root 权限的其他用户”身份登录系统,然后执行“init 6”(如果系统已重新启动)?

是:使用系统(“init 6”);在你的程序中。

不:你有安全问题,首先你必须解决它。