在Ubuntu中,你可以使用readdir
函数来读取目录中的文件和子目录。但是,readdir
本身并不提供文件所有者的信息。要获取文件所有者信息,你需要使用stat
函数。
以下是一个简单的示例,展示了如何使用readdir
和stat
函数来获取目录中文件的名称和所有者信息:
#include#include #include #include #include int main() { DIR *dir; struct dirent *entry; struct stat file_stat; char path[1024]; dir = opendir("."); if (dir == NULL) { perror("opendir"); return EXIT_FAILURE; } while ((entry = readdir(dir)) != NULL) { snprintf(path, sizeof(path), "./%s", entry->d_name); if (stat(path, &file_stat) == -1) { perror("stat"); continue; } struct passwd *owner = getpwuid(file_stat.st_uid); printf("File: %s, Owner: %s\n", entry->d_name, owner->pw_name); } closedir(dir); return EXIT_SUCCESS; }
这个程序首先打开当前目录(.
),然后使用readdir
函数读取目录中的每个条目。对于每个条目,我们使用snprintf
函数构建文件的完整路径,然后使用stat
函数获取文件的状态信息。最后,我们使用getpwuid
函数根据文件的UID查找文件所有者,并将结果打印到屏幕上。
编译并运行此程序,你将看到类似以下的输出:
File: example.txt, Owner: your_username File: another_file.txt, Owner: another_user ...
请注意,这个示例仅适用于C语言。如果你需要在其他编程语言中实现类似的功能,请查阅相应语言的文档。