2017-04-26 76 views
2

我打算開發一個跨平臺的應用程序,可能需要在用戶的操作系統關閉或重新啓動之前進行處理。有沒有辦法暫時暫停或重寫C++中的OS關閉/重新啓動?有沒有辦法在C++中暫停OS關機或重啓?

另外,該功能將完全由用戶通過配置選擇,默認情況下禁用。

我覺得這不可能不侵入操作系統,但我想我會問這個社區的想法。

如果我唯一的選擇是爲了實現這個功能而對操作系統進行一些「破解」,那麼我不會再追求這個想法。 :)

在此先感謝!

+1

for windows這裏是一個騙局:http://stackoverflow.com/questions/101647/how-to-schedule-a-task-to-run-when-shutting-down-windows – user463035818

+0

你可以創建一個批處理文件關閉計算機並用系統調用它(「mybatchfile.bat」); – Rafael

+1

對於Windows,請參閱https://msdn.microsoft.com/en-us/library/windows/desktop/aa376890(v=vs.85).aspx –

回答

3

有沒有辦法在C++中臨時暫停或重寫OS關機/重啓?

標準C++中沒有這樣的功能。

除非有特定於平臺的API來執行此操作,否則恐怕您將無法暫停或覆蓋C++中的OS關閉/重新啓動操作。

2

這裏沒有C++的東西。但典型的GUI(Windows,Mac等)會通知您的應用程序掛起關機,以便您可以進行最終處理。這是特定於操作系統,並遵守其規則。

+0

在mac中,您可以要求os不要關機,將取消操作並詢問用戶是否強制關閉它,在linux中 沒有這樣的事情,它會關閉,不管你是否喜歡它(因爲只有root通常可以命令關閉) 在windows中,那裏將是一個延遲之後,一切將被迫關閉(至少在7,從未嘗試過8或10) – Qchmqs

0

要覆蓋計劃/正在關機,您可以:

對於Windows 7

system("shutdown /a"); 

對於Linux

system("shutdown -c"); 
0

我用Google搜索了相關文章認爲how to detect Linux shutdown/reboot 但似乎很難實現你的目的。

從我腦海中想到的是;如果您可以將您的程序作爲服務添加,那麼Linux系統將在其關閉之前關閉該服務。

好運

0

感謝所有的迴應和想法!

從收到的反饋來看,似乎沒有「安全」和跨平臺的方式來輕鬆使用C++來實現此類功能。

Pete Becker提到那裏可能有每個操作系統的具體規則。這是有道理的,而且這些規則也總是會有變化。

其他人建議使用system()命令。但是,這可能會在系統中引入進一步的問題和漏洞(1)(2)(可能有更好的解釋和/或示例,所以請在發現它們時編輯此帖子)。

考慮到上述所有情況,我的建議是將應用程序配置爲讓用戶通過GUI手動執行這些進程(完全由他們完成),在啓動操作系統時執行這些進程,或者同時執行這兩個進程。

再次感謝所有回覆!

相關問題