首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中安全重启linux

问在C中安全重启linux
EN

Stack Overflow用户
提问于 2015-12-07 20:28:30
回答 2查看 1.9K关注 0票数 0

在没有exec的情况下,我怎样才能像外壳命令reboot一样从C安全地重启?reboot.h中的重启函数不安全。它不进行同步,也不可能进行卸载和安全进程终止。什么函数有魔力参数?

Bet问候

EN

回答 2

Stack Overflow用户

发布于 2015-12-07 20:35:18

最简单的方法:

代码语言:javascript
复制
system('reboot')

否则,您将获得Linux: Programatically shutdown or reboot computer from a user-level process

票数 1
EN

Stack Overflow用户

发布于 2015-12-07 21:59:12

事实上,有些系统在没有正确卸载分区的情况下重新启动,从而导致文件系统错误。例如,Android是唯一的触发器,强制文件系统挂载为只读(通过issuing "u“命令到sysrq-)。如果您不关注性能,并且您更希望系统完全关闭,而不是快速关闭,那么您需要执行以下步骤:

  • 停止主循环。没有单一的方法可以做到这一点,这取决于您的系统使用的确切的init实现。你需要停止主init循环,因为你不想让init重新启动你将在下一步中终止的进程。
  • 向所有进程发出“停止”信号,让它们完成它们的操作
  • 如果“停止”花费的时间太长,则向所有进程发出“终止”信号。你不希望有打开文件的进程在重新启动所有分区到read-only
  • Ask内核之前通过发出unmounting.
  • Unmount标准调用来关闭机器。

以上所有步骤你都可以在C代码中使用kill,umount,reboot这样的调用来完成。

正如我之前所说的,安卓在干净关机方面不是最好的例子,但你可以看看示例C代码关机实现here。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34133577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档