我有一个小的cpp应用程序,将重新启动系统。到目前为止,这个方法运行得很好。
sync(); //need for data safety
reboot(RB_AUTOBOOT);除非您通过SSH连接并在连接的设备上运行此程序。然后,SSH连接挂起。
如果您通过SSH连接并使用CLI命令
sudo reboot或
sudo shutdown -r nowSSH连接将终止,并显示以下消息
Connection to xxx.xxx.xxx.xxx closed by remote host.
Connection to xxx.xxx.xxx.xxx closed.如何使用cpp重启方法获得相同的行为?
我阅读了https://man7.org/linux/man-pages/man2/reboot.2.html并在互联网上搜索,但没有找到关于这个话题的任何东西。
发布于 2021-09-03 09:39:09
sudo reboot命令将通知init您需要重新引导,init将杀死所有用户空间进程,然后执行实际的内核重新引导。
reboot系统调用执行等同于sudo reboot -f (立即重新启动)的操作。
您可以尝试自己杀死所有东西,然后调用syscall。
或者你可以询问init,它通常位于PID=1,重启是通过向它发送一个SIGINT来通知的。
所以:
#include <sys/types.h>
#include <signal.h>
int main() {
kill(1, SIGINT);
}应该做这件事。
https://stackoverflow.com/questions/69042428
复制相似问题