这是在C中检查目录是否为空的正确方法吗?有没有更有效的方法来检查空目录,特别是如果它有1000个文件,如果不是空的?
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;
}
Run Code Online (Sandbox Code Playgroud)
如果它是一个空目录,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 …Run Code Online (Sandbox Code Playgroud) 就像控制键在终端中用'^'表示,命令键(mac)的等价物是什么?
我正在尝试使用stty重新映射我的bash快捷方式
例如
stty eof ^ D.
但是我想使用命令键而不是控制.
编辑:
好吧,我试图解决的问题是我想要交换命令和控制键,因为我在osx和linux上工作,不同的键组合给我带来了很大的痛苦.
所以我使用osx首选项交换了修饰键.但是现在像Ctrl + C等所有的bash快捷键已经变得等同于使用键序列'cmd + c'了 - 这是不可接受的.
值得庆幸的是iTerm2,也支持重新映射修饰键,因此对于iterm2我再次反转它们,这意味着iTerm2将命令识别为命令和控制作为控制.
所以问题现在解决了.