Mi código es algo como esto:Eliminar archivos mientras se lee directorio con 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);
(este código no se ha probado y puramente un ejemplo)
La cuestión es: ¿Está permitido eliminar una archivo en un directorio mientras recorre el directorio con readdir()? O ¿readdir() todavía encontrará el archivo .log eliminado?
LOL @ 'man 2 readdir':" Esta no es la función que le interesa ". – pmg
La misma página de manual dice: "Las entradas de directorio representan archivos; los archivos pueden eliminarse de un directorio o agregarse a un directorio de forma asincrónica a la operación de readdir()" ¡Pero quizás sea mejor evitar esto !? – To1ne