Мой код-то вроде этого:Удаление файлов во время чтения каталога с ReadDir()
DIR* pDir = opendir("/path/to/my/dir");
struct dirent pFile = NULL;
while ((pFile = readdir())) {
// Check if it is a .zip file
if (subrstr(pFile->d_name,".zip") {
// It is a .zip file, delete it, and the matching log file
char zipname[200];
snprintf(zipname, sizeof(zipname), "/path/to/my/dir/%s", pFile->d_name);
unlink(zipname);
char* logname = subsstr(zipname, 0, strlen(pFile->d_name)-4); // Strip of .zip
logname = appendstring(&logname, ".log"); // Append .log
unlink(logname);
}
closedir(pDir);
(этот код не тестировался и чисто пример)
Дело в том: Является ли это разрешено удалять файл в каталоге при циклическом переходе через каталог с помощью readdir()? Или будет readdir() все еще найти удаленный файл .log?
LOL @ 'man 2 readdir':« Это не функция, которая вас интересует ». – pmg
На той же странице руководства говорится: «Записи каталога представляют файлы, файлы могут быть удалены из каталога или добавлены в каталог асинхронно к операции readdir()« Но, может быть, лучше избегать этого !? – To1ne