पर सी का उपयोग कर निर्देशिका खाली है या नहीं, क्या यह जांचने का सही तरीका है कि कोई निर्देशिका खाली है या नहीं? क्या खाली निर्देशिका की जांच करने के लिए एक और अधिक प्रभावी तरीका है, खासकर अगर खाली होने पर फाइलों के 1000s हैं?जांचें कि क्या लिनक्स
int isDirectoryEmpty(char *dirname) {
int n = 0;
struct dirent *d;
DIR *dir = opendir(dirname);
if (dir == NULL) //Not a directory or doesn't exist
return 1;
while ((d = readdir(dir)) != NULL) {
if(++n > 2)
break;
}
closedir(dir);
if (n <= 2) //Directory Empty
return 1;
else
return 0;
}
तो इसकी एक खाली निर्देशिका, readdir
प्रविष्टियों के बाद बंद हो जाएगा '।' और '..' और इसलिए n<=2
खाली है।
तो अपने खाली या मौजूद नहीं है, यह 1 लौटना चाहिए, और वापसी 0
अद्यतन:
@c$ time ./isDirEmpty /fs/dir_with_1_file; time ./isDirEmpty /fs/dir_with_lots_of_files
0
real 0m0.007s
user 0m0.000s
sys 0m0.004s
0
real 0m0.016s
user 0m0.000s
sys 0m0.008s
क्यों यह अब फ़ाइलों के बहुत सारे के साथ एक निर्देशिका के लिए जाँच करने के लिए ले करता है के रूप में की तुलना में सिर्फ एक फ़ाइल के साथ?
कृपया मेरे संपादन को पढ़ें, एक ही कोड के लिए एक ही निर्देशिका के लिए एक फ़ाइल पर चलाने के लिए अधिक समय क्यों लगता है, जिसमें एक फ़ाइल की तुलना में बहुत सारी फाइलें हैं? – freethinker
@freethinker मुझे यकीन नहीं है। एक 'स्ट्रेस' करें और हमें दिखाएं। – cnicutar
ने स्ट्रैस – freethinker