Компонент системы X11, который обеспечивает сохранение и восстановление сеанса, называется
Windows 2000 и XP, а также некоторые системы Unix предлагают другой механизм, который носит название «спящих процессов» (hibernation). Когда пользователь останавливает компьютер, операционная система просто выгружает оперативную память компьютера на диск и загружает ее обратно, когда компьютер «просыпается». Приложениям ничего не надо делать, и они даже могут ничего не знать об этом.
Когда пользователь инициирует завершение работы, мы можем перехватить управление непосредственно перед завершением путем переопределения функции
Мы рассмотрим управление сеансом через программный код приложения Tic-Tac-Toe (крестики-нолики), которое работает под управлением менеджера сеансов. Во-первых, давайте рассмотрим функцию
01 int main(int argc, char *argv[])
02 {
03 Application app(argc, argv);
04 TicTacToe toe;
05 toe.setObjectName("toe");
06 app.setTicTacToe(&toe);
07 toe.show;
08 return app.exec;
09 }
Мы создаем объект
Затем мы создаем виджет
Ниже приводится определение класса
01 class Application : public QApplication
02 {
03 Q_OBJECT
04 public:
05 Application(int &argc, char *argv[]);
06 void setTicTacToe(TicTacToe *tic);
07 void saveState(QSessionManager &sessionManager);
08 void commitData(QSessionManager &sessionManager);
09 private:
10 TicTacToe *ticTacToe;
11 };
Класс
01 void Application::saveState(QSessionManager &sessionManager)
02 {
03 QString fileName = ticTacToe->saveState;
04 QStringList discardCommand;
05 discardCommand << "rm" << fileName;
06 sessionManager.setDiscardCommand(discardCommand);
07 }
В системе X11 функция
Мы начинаем с попытки сохранения виджетом
rm
где
Менеджер сеансов имеет также