我需要通過Lua腳本重新啓動系統。 我需要在重新啓動之前編寫一些字符串,並且一旦重新啓動完成,需要在Lua 腳本中編寫一個字符串。通過Lua腳本重新啓動系統
例子:
print("Before Reboot System")
Reboot the System through Lua script
print("After Reboot System")
我將如何做到這一點?
我需要通過Lua腳本重新啓動系統。 我需要在重新啓動之前編寫一些字符串,並且一旦重新啓動完成,需要在Lua 腳本中編寫一個字符串。通過Lua腳本重新啓動系統
例子:
print("Before Reboot System")
Reboot the System through Lua script
print("After Reboot System")
我將如何做到這一點?
在Lua中沒有辦法做你正在問的問題。您可以使用os.execute
來完成此操作,具體取決於您的系統並進行了設置,但Lua的庫僅包含標準c庫中可能包含的內容,其中不包括重新啓動等操作系統特定的功能。
您可以使用os.execute
來發出系統命令。對於Windows,它是shutdown -r
,對於Posix系統,它只是reboot
。因此,您的Lua代碼將如下所示:
請注意,重新啓動命令的一部分正在停止活動程序,如您的Lua腳本。這意味着存儲在RAM中的任何數據都將丟失。您需要使用例如table serialization將任何要保留的數據寫入磁盤。
不幸的是,沒有更多關於您的環境的知識,我無法告訴您如何再次調用腳本。您可以將腳本追加到~/.bashrc
或類似的末尾。
確保加載此數據並在您調用重新啓動功能後的某一點開始是您回來時的第一件事!你不想陷入無休止的重啓循環中,當你的電腦開機時,第一件事就是關閉它。像這樣的東西應該工作:
local function is_rebooted()
-- Presence of file indicates reboot status
if io.open("Rebooted.txt", "r") then
os.remove("Rebooted.txt")
return true
else
return false
end
end
local function reboot_system()
local f = assert(io.open("Rebooted.txt", "w"))
f:write("Restarted! Call On_Reboot()")
-- Do something to make sure the script is called upon reboot here
-- First line of package.config is directory separator
-- Assume that '\' means it's Windows
local is_windows = string.find(_G.package.config:sub(1,1), "\\")
if is_windows then
os.execute("shutdown -r");
else
os.execute("reboot")
end
end
local function before_reboot()
print("Before Reboot System")
reboot_system()
end
local function after_reboot()
print("After Reboot System")
end
-- Execution begins here !
if not is_rebooted() then
before_reboot()
else
after_reboot()
end
(警告 - 未經測試的代碼我不喜歡重啓:)
注ANY WAY:這不會對系統的正常工作。這不是Posix或Windows。但我猜你知道如果你正在其中一個系統上工作。 – 2011-03-17 01:35:51
有重新啓動系統 – che 2011-03-16 19:52:13