簡體   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