在Ubuntu中,你可以使用readdir
函数来读取目录中的文件和子目录。但是,readdir
本身并不提供文件所有者的信息。要获取文件所有者信息,你需要使用stat
函数。
以下是一个简单的示例,展示了如何使用readdir
和stat
函数来获取目录中文件的名称和所有者信息:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <pwd.h>
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语言。如果你需要在其他编程语言中实现类似的功能,请查阅相应语言的文档。