ARM技术论坛
直播中

嵌入式小能手

2年用户 1514经验值
擅长:嵌入式技术
私信 关注
[经验]

飞凌嵌入式ElfBoard-获取文件的状态信息之lstat

1.头文件
#include
2.函数原型
int lstat(const char *pathname, struct stat *statbuf);
3.参数
pathname:符号链接的路径
statbuf:执行struct stat结构的指针,用来存储符号链接的状态信息。
4.返回值
返回值:成功返回0 失败返回-1。
5.示例:(使用lstat获取符号链接状态信息)
#include
#include
#include
#include

void print_file_info(const char *path) {
    struct stat file_info;

    if (lstat(path, &file_info) < 0) {
        perror("lstat");
        exit(EXIT_FAILURE);
    }

    printf("File: %s\n", path);

    if (S_ISLNK(file_info.st_mode)) {
        printf("Type: Symbolic link\n");
    } else {
        printf("Is not Symbolic link\n");
    }

    printf("Size: %ld bytes\n", (long)file_info.st_size);
    printf("Permissions: ");
    printf((S_ISDIR(file_info.st_mode)) ? "d" : "-");
    printf((file_info.st_mode & S_IRUSR) ? "r" : "-");
    printf((file_info.st_mode & S_IWUSR) ? "w" : "-");
    printf((file_info.st_mode & S_IXUSR) ? "x" : "-");
    printf((file_info.st_mode & S_IRGRP) ? "r" : "-");
    printf((file_info.st_mode & S_IWGRP) ? "w" : "-");
    printf((file_info.st_mode & S_IXGRP) ? "x" : "-");
    printf((file_info.st_mode & S_IROTH) ? "r" : "-");
    printf((file_info.st_mode & S_IWOTH) ? "w" : "-");
    printf((file_info.st_mode & S_IXOTH) ? "x" : "-");
    printf("\n");
}

int main() {
    const char *path = "example_symlink";

    // 测试路径是否存在的符号链接
    print_file_info(path);

    return 0;
}
查看当前目录下的文件:
$ls -l
total 20
lrwxrwxrwx 1 elf forlinx    10  8月  9 15:17 example_symlink -> /proc/kmsg
-rwxr-xr-x 1 elf forlinx 16272  8月  9 15:52 lstat_test
-rw-r--r-- 1 elf forlinx  1233  8月  9 15:52 lstat_test.c
6.执行命令,查看测试结果
File: example_symlink
Type: Symbolic link
Size: 10 bytes
Permissions: -rwxrwxrwx

更多回帖

发帖
×
20
完善资料,
赚取积分