从程序重新启动Linux

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

但是,没有一个答案似乎为我工作。

这是我的问题:

我有一个硬件上的程序。 我可以以root身份login并运行它,没有任何问题。 但是,如果我作为具有根证书的不同用户login,则程序执行正常,但不会重新启动。 它只会closures当前的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 

如果我作为服务login,将运行“脚本”。 用户有一个列表选项可供select。 其中一个选项是运行上面提到的程序。

编辑:

另外值得一提的是:脚本中的一个选项是重新启动系统。 如果从脚本内部调用,它将起作用。 但是我想从程序中调用重启。

首先,作为“具有root权限的不同用户”登录到你的系统,如果系统已经重新启动,执行“init 6”?

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

否:你有安全问题,首先你必须解决这个问题。