如果我的程序沒有正確拆卸,系統變得不穩定。沒有真正的解決方法。所以,如果我的程序崩潰並且沒有正確拆卸,那麼我需要告訴用戶何時他再次嘗試運行系統時處於不穩定狀態。正確的做法是在我啓動時創建一個鎖文件,並在我正確退出時將其刪除。如果我開始並且該文件存在,那麼我知道我之前崩潰了。這是正確的方法嗎?如何知道我的程序上次運行時是否崩潰?
3
A
回答
5
兩件事情,可能是有用的:
- 的Application Recovery and Restart API可以在Vista和Win7中使用。您可以指定操作系統將爲您調用的恢復功能,這樣用戶將會收到通知
- 創建一個unhandled exception filter,您可以在其他位置嘗試執行某些非常關鍵的恢復。這也將在XP上運行。我之前使用這種技術來關閉驅動程序,否則如果沒有正確關閉,它們會掛起。
0
只要你考慮它,但鎖定文件可能不會被刪除的情況下獨立於您的應用程序,例如.e.g。網絡錯誤,文件系統錯誤,o.s錯誤。
因此,根據您的要求,如果知道當前狀態是否有效至關重要,則可能需要通過檢查所有因變量和狀態來確定有效性,而不是僅依賴鎖定文件。否則,它可以是一個簡單的方法來監視退出狀態。只要不依靠它來確定你是否應該重新發射導彈。
1
如果你的程序崩潰了,機器重新啓動,會不會仍然處於不穩定的狀態?如果不是,那麼鎖定文件不是您想要採取的方法,因爲該文件在重新啓動後仍然存在。嘗試使用global atom table解決方案。
// Test if the application has crashed since the last reboot
ATOM myAtom = GlobalFindAtom ("MySecretName");
if (myAtom != 0)
{
// We crashed on last run, inform user and exit
// ...
exit (0);
}
// Create a global atom which will be destroyed only on clean termination
myAtom = GlobalAddAtom ("MySecretName");
// Run your main program here
// ...
// Clean termination, delete the atom
GlobalDeleteAtom (myAtom);
0
Microsoft Word(PPT/Excel也)遵循類似的方法。在寫入模式下打開文檔時會創建一個隱藏文件,並且只要應用程序正常退出,它就會被刪除。該文件可能有更多的信息,如自動保存文件每'x'分鐘等,但重點是,你的觀點是有效的:-)
相關問題
- 1. 我們如何知道ios應用程序是否在上次啓動時崩潰?
- 2. xcode崩潰時,我在我的iPhone上運行應用程序
- 3. 如何知道我的應用程序崩潰?
- 4. 如何知道應用程序崩潰的哪一行?
- 5. 如何知道我的應用程序是否在Bluestacks上運行?
- 6. 如何知道我的應用程序是否在JBoss服務器上運行?
- 7. 是否有任何方法知道應用程序是否第一次運行
- 8. 在運行時,我怎麼知道我是否在WinXP +上? win32
- 9. 我如何知道我的Android應用程序是否在後臺運行?
- 10. 不知道爲什麼程序崩潰
- 11. 當我在cmd上運行時,流星應用程序崩潰
- 12. 在android應用程序中,如何知道應用程序是否是第一次運行時?
- 13. 如何知道Windows Phone應用程序是否第一次運行
- 14. 崩潰上運行的IOS 9通知
- 15. 如何知道我的媒體爲何在Chromecast上崩潰?
- 16. iOS9如何知道我是否在運行時泄漏內存?
- 17. 我每次運行此代碼時,我的應用程序崩潰
- 18. 在IDE外運行時程序崩潰
- 19. MapActivity在運行程序時崩潰
- 20. C程序在運行時崩潰
- 21. OpenCV 2.4.6程序運行時崩潰
- 22. 爲什麼我的程序在我嘗試運行時崩潰?
- 23. 運行時錯誤,使我的.exe崩潰,我不知道爲什麼
- 24. 智能指針如何知道何時釋放程序崩潰時的資源?
- 25. 如何知道我的Silverlight應用程序是否在本地運行?
- 26. 嘗試運行OpenCV程序時,Qt Creator崩潰。 [ntdll.dll崩潰]
- 27. 在yesod應用程序運行時崩潰記錄卡崩潰
- 28. 程序是否識別它上次崩潰?
- 29. 運行過程中單聲道崩潰
- 30. 如何知道Linux中程序崩潰的地址?
好點。我想我會寫一個標誌我的設置文件,而不是爲了讓生活更輕鬆。謝謝 – Memb 2009-11-11 19:56:45