之前已经问过这个问题:How to restart Linux from inside a C++ program?
但是,没有一个答案似乎对我有用。
这是我的问题:
我在一块硬件上有一个程序。我可以以root用户身份登录并运行它而不会出现任何问题。但是,如果我以root priveleges身份登录为其他用户,程序执行正常,但不会重新启动。它只关闭当前的Telnet会话。
要重新启动,我使用了system(reboot)
。
到目前为止,我已经尝试过:
sync();
reboot(RB_POWER_OFF);
并且
execl("/sbin/reboot","reboot",NULL,NULL);
无济于事。
(我不确定,如果我正确使用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
如果我以服务身份登录,则会运行“script”。用户有一个列表选项可供选择。其中一个选择是运行上述程序。
编辑:
另外值得一提的是:脚本中的一个选项是重启系统。如果从脚本内部调用,它可以工作。但是我想从程序中调用reboot。
答案 0 :(得分:2)
首先,以“使用root priveleges的其他用户”登录系统,如果系统重新启动,则执行'init 6'?
是:使用system(“init 6”);在你的程序中。
不:你有安全问题,首先你必须解决这个问题。