我打算開發一個跨平臺的應用程序,可能需要在用戶的操作系統關閉或重新啓動之前進行處理。有沒有辦法暫時暫停或重寫C++中的OS關閉/重新啓動?有沒有辦法在C++中暫停OS關機或重啓?
另外,該功能將完全由用戶通過配置選擇,默認情況下禁用。
我覺得這不可能不侵入操作系統,但我想我會問這個社區的想法。
如果我唯一的選擇是爲了實現這個功能而對操作系統進行一些「破解」,那麼我不會再追求這個想法。 :)
在此先感謝!
我打算開發一個跨平臺的應用程序,可能需要在用戶的操作系統關閉或重新啓動之前進行處理。有沒有辦法暫時暫停或重寫C++中的OS關閉/重新啓動?有沒有辦法在C++中暫停OS關機或重啓?
另外,該功能將完全由用戶通過配置選擇,默認情況下禁用。
我覺得這不可能不侵入操作系統,但我想我會問這個社區的想法。
如果我唯一的選擇是爲了實現這個功能而對操作系統進行一些「破解」,那麼我不會再追求這個想法。 :)
在此先感謝!
有沒有辦法在C++中臨時暫停或重寫OS關機/重啓?
標準C++中沒有這樣的功能。
除非有特定於平臺的API來執行此操作,否則恐怕您將無法暫停或覆蓋C++中的OS關閉/重新啓動操作。
這裏沒有C++的東西。但典型的GUI(Windows,Mac等)會通知您的應用程序掛起關機,以便您可以進行最終處理。這是特定於操作系統,並遵守其規則。
在mac中,您可以要求os不要關機,將取消操作並詢問用戶是否強制關閉它,在linux中 沒有這樣的事情,它會關閉,不管你是否喜歡它(因爲只有root通常可以命令關閉) 在windows中,那裏將是一個延遲之後,一切將被迫關閉(至少在7,從未嘗試過8或10) – Qchmqs
要覆蓋計劃/正在關機,您可以:
對於Windows 7
system("shutdown /a");
對於Linux
system("shutdown -c");
我用Google搜索了相關文章認爲how to detect Linux shutdown/reboot 但似乎很難實現你的目的。
從我腦海中想到的是;如果您可以將您的程序作爲服務添加,那麼Linux系統將在其關閉之前關閉該服務。
好運
感謝所有的迴應和想法!
從收到的反饋來看,似乎沒有「安全」和跨平臺的方式來輕鬆使用C++來實現此類功能。
Pete Becker提到那裏可能有每個操作系統的具體規則。這是有道理的,而且這些規則也總是會有變化。
其他人建議使用system()
命令。但是,這可能會在系統中引入進一步的問題和漏洞(1)(2)(可能有更好的解釋和/或示例,所以請在發現它們時編輯此帖子)。
考慮到上述所有情況,我的建議是將應用程序配置爲讓用戶通過GUI手動執行這些進程(完全由他們完成),在啓動操作系統時執行這些進程,或者同時執行這兩個進程。
再次感謝所有回覆!
for windows這裏是一個騙局:http://stackoverflow.com/questions/101647/how-to-schedule-a-task-to-run-when-shutting-down-windows – user463035818
你可以創建一個批處理文件關閉計算機並用系統調用它(「mybatchfile.bat」); – Rafael
對於Windows,請參閱https://msdn.microsoft.com/en-us/library/windows/desktop/aa376890(v=vs.85).aspx –