在Debian中,使用readdir
函數獲取文件組的方法如下:
sudo apt-get update
sudo apt-get install build-essential
readdir_example.c
,并添加以下代碼:#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <pwd.h>
#include <grp.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s <directory>\n", argv[0]);
return 1;
}
DIR *dir = opendir(argv[1]);
if (dir == NULL) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_REG) { // 只處理普通文件
struct stat file_stat;
if (stat(argv[1] "/" entry->d_name, &file_stat) == -1) {
perror("stat");
continue;
}
gid_t file_gid = file_stat.st_gid;
struct group *group_info = getgrgid(file_gid);
if (group_info != NULL) {
printf("%s: %s\n", entry->d_name, group_info->gr_name);
} else {
printf("%s: Unknown group\n", entry->d_name);
}
}
}
closedir(dir);
return 0;
}
這段代碼會遍歷指定目錄中的所有文件,并使用readdir
函數讀取每個文件名。然后,它使用stat
函數獲取文件的元數據,包括文件組ID(GID)。最后,它使用getgrgid
函數根據GID查找文件所屬的組名,并將其打印出來。
gcc
編譯源文件:gcc readdir_example.c -o readdir_example
./readdir_example /path/to/directory
這將輸出指定目錄中所有文件的名稱及其所屬的組名。