Как смоделировать системный сбой или сбой питания в C#/C++?C#, имитирующий системный сбой
Я пишу библиотеку, которая похожа на базу данных и должна реализовать некоторые аспекты принципа транзакции типичных баз данных sql. В библиотеке есть один метод, в котором он должен убедиться, что все данные записаны на жесткий диск (используя функцию win api FlushFileBuffers). После этой строки библиотека рассмотрит транзакцию как завершенную. После некоторых исследований я узнал, что FlushFileBuffers не является надежным, например. жесткий диск мог просто вернуть, что все буферы очищены, даже если это не так. Мне нужен способ немедленно убить мою систему после вызова FlushFileBuffers, чтобы проверить, действительно ли данные были записаны после строки кода. Это может выглядеть так:
writeToFile(fileHandle);
FlushFileBuffers(fileHandle);
killSystem(); //this is missing
При следующем перезапуске системы я мог проверить, действительно ли данные были выписаны. Если нет способа убить систему, есть ли другой сценарий, который я мог бы использовать для проверки этого? Все идеи приветствуются!
Выполнить это внутри виртуальной машины и аварии (или «убить -9») хост-процесс VM. – user2864740
(я не знаю, как можно было бы синхронизировать этот процесс.) – user2864740
Одна вещь, которую вы можете сделать, это иметь программу, которая перечисляет процессы и убивает каждый, кроме себя. Это должно быть сделано в цикле, и внутреннее убийство должно быть проверено. Запустите такую программу на привилегиях администратора, и ваша ОС закроется со скоростью света: D – SOReader