小编fre*_*ker的帖子

在Linux上使用C检查目录是否为空

这是在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)

c linux directory

14
推荐指数
1
解决办法
2万
查看次数

终端中mac命令密钥的表示形式是什么?

就像控制键在终端中用'^'表示,命令键(mac)的等价物是什么?

我正在尝试使用stty重新映射我的bash快捷方式

例如

stty eof ^ D.

但是我想使用命令键而不是控制.

编辑:

好吧,我试图解决的问题是我想要交换命令和控制键,因为我在osx和linux上工作,不同的键组合给我带来了很大的痛苦.

所以我使用osx首选项交换了修饰键.但是现在像Ctrl + C等所有的bash快捷键已经变得等同于使用键序列'cmd + c'了 - 这是不可接受的.

值得庆幸的是iTerm2,也支持重新映射修饰键,因此对于iterm2我再次反转它们,这意味着iTerm2将命令识别为命令和控制作为控制.

所以问题现在解决了.

macos bash terminal stty

6
推荐指数
1
解决办法
1039
查看次数

标签 统计

bash ×1

c ×1

directory ×1

linux ×1

macos ×1

stty ×1

terminal ×1