Mã của tôi là một cái gì đó như thế này:file Xóa trong khi đọc thư mục với 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);
(mã này là chưa được kiểm tra và hoàn toàn là một ví dụ)
Vấn đề là: Có được phép xóa một tập tin trong một thư mục trong khi lặp qua thư mục với readdir()? Hoặc sẽ readdir() vẫn tìm thấy tệp .log đã xóa?
LOL @ 'man 2 readdir':" Đây không phải là chức năng bạn quan tâm. " – pmg
Cùng một trang người đàn ông nói: "Mục nhập thư mục đại diện cho tệp; tệp có thể bị xóa khỏi thư mục hoặc được thêm vào thư mục không đồng bộ với hoạt động của readdir()" Nhưng có thể tránh điều này tốt hơn !? – To1ne