Mój kod jest coś takiego:Usuwanie plików podczas odczytu katalogu z 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);
(kod ten jest niesprawdzone i wyłącznie przykładem)
Chodzi o to: Czy wolno usunąć plik w katalogu podczas przeglądania katalogu za pomocą readdir()? Czy też readdir() nadal znajdzie usunięty plik .log?
LOL @ 'man 2 readdir':" To nie jest funkcja, którą jesteś zainteresowany. " – pmg
Ta sama strona podręcznika mówi: "Pozycje katalogu reprezentują pliki, pliki mogą być usunięte z katalogu lub dodane do katalogu asynchronicznie do operacji readdir()" Ale może lepiej tego uniknąć !? – To1ne