繁体   English   中英

在C中安全重启Linux

[英]Safe reboot linux in C

我如何在没有exec的情况下从C重新启动像shell命令一样安全的重新reboot reboot.h中的重新启动功能不安全。 它不进行同步,也可能不会进行卸载和安全的过程终止。 哪些功能具有magic参数?

投注问候

最简单的方法:

system('reboot')

否则,您将拥有Linux:以编程方式从用户级进程关闭或重新启动计算机

实际上,有些系统在没有正确卸载分区的情况下完成了重新引导,从而导致文件系统错误。 例如,Android仅强制文件系统挂载为只读(通过 sysrq-trigger 发出 “ u”命令)。 如果您不专注于性能,而是希望干净地,快速地关闭系统,那么您需要执行以下步骤:

  • 停止主初始化循环。 没有单一的方法可以执行此操作,这取决于您的系统使用的是哪种初始化实现。 您需要停止主init循环,因为您不希望init重新启动将在下一步开始杀死的进程。
  • 向所有流程发出“停止”信号,以使它们完成操作
  • 如果“停止”时间太长,则向所有进程发出“ kill”信号。 卸载之前,您不希望进程具有打开的文件。
  • 将所有分区卸载为只读
  • 要求内核通过发出重新启动标准调用来关闭计算机。

您可以使用killumountreboot等调用从C代码执行上述所有步骤。

如前所述,就干净关机而言,Android并不是最佳示例,但是您可以在此处查看示例C代码关机实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM