У меня есть программа, которая читает набор файлов, закрывает их, а затем пытается их удалить.fstream :: close() не закрывает файл
Иногда (не всегда, но довольно часто) удаление не выполняется с ошибкой «совместного использования».
Использование монитора процессов sysinternals Я видел, что в этих случаях операция закрытия не отражалась на мониторе процесса.
Похоже, что иногда тесный системный вызов пропускается без видимой причины и без каких-либо исключений.
Это происходит на через окно 7 64bit машин с помощью Visual Studio 2010.
код образца;
void readFile(string file)
{
ifstream stream(file);
string line;
while(getline(stream, line))
{
cout << line << endl:
}
stream.close(); // this is redundant
}
// Вызывающий код:
readFile(file);
if(remove(file.c_str()) != 0)
{
cout << "file deletion failed" << endl;
}
Минимальную TestCase, который воспроизводит проблемы было бы неплохо. – Xeo
Соответствующий код разворачивается, поэтому копирование всего соответствующего кода проблематично. Кроме того, тот же код работал в других приложениях без каких-либо проблем. –
Если код разбросаны, попробуйте создать минимальный образец кода, который воспроизведет проблему. Скорее всего, проблема покажет вам, когда вы это сделаете. Без кода ответы будут просто спекуляцией и ничего больше. –