xref: /DragonOS/user/apps/test_fstat/main.c (revision bc6f0a967c8cb1e9379ced184b25a7722fbda2a4)
1be63f3b2Shoumkh #include <fcntl.h>
2be63f3b2Shoumkh #include <stdio.h>
3be63f3b2Shoumkh #include <stdlib.h>
4*bc6f0a96S裕依 #include <sys/stat.h>
5*bc6f0a96S裕依 #include <sys/types.h>
6*bc6f0a96S裕依 #include <unistd.h>
main()7be63f3b2Shoumkh int main()
8be63f3b2Shoumkh {
9be63f3b2Shoumkh     int fd = open("/bin/about.elf", O_RDONLY);
10be63f3b2Shoumkh     if (fd == -1)
11be63f3b2Shoumkh         return 0;
12be63f3b2Shoumkh     printf("fd = %d\n", fd);
13be63f3b2Shoumkh     struct stat *st = (struct stat *)malloc(sizeof(struct stat));
14be63f3b2Shoumkh     fstat(fd, st);
15*bc6f0a96S裕依     printf("stat size = %lu\n", sizeof(struct stat));
16be63f3b2Shoumkh     // FIXME 打印数据时内存出错
17be63f3b2Shoumkh     printf("====================\n");
18*bc6f0a96S裕依     printf("st address: %p\n", st);
19*bc6f0a96S裕依     printf("st_dev = %lu\n", (*st).st_dev);
20*bc6f0a96S裕依     printf("st_ino = %lu\n", (*st).st_ino);
21be63f3b2Shoumkh     printf("st_mode = %d\n", (*st).st_mode);
22*bc6f0a96S裕依     printf("st_nlink = %lu\n", (*st).st_nlink);
23be63f3b2Shoumkh     printf("st_uid = %d\n", (*st).st_uid);
24be63f3b2Shoumkh     printf("st_gid = %d\n", (*st).st_gid);
25*bc6f0a96S裕依     printf("st_rdev = %lu\n", (*st).st_rdev);
26*bc6f0a96S裕依     printf("st_size = %ld\n", (*st).st_size);
27*bc6f0a96S裕依     printf("st_blksize = %ld\n", (*st).st_blksize);
28*bc6f0a96S裕依     printf("st_blocks = %ld\n", (*st).st_blocks);
29*bc6f0a96S裕依     printf("st_atim.sec= %ld\tst_atim.nsec= %ld\n", (*st).st_atim.tv_sec, (*st).st_atim.tv_nsec);
30*bc6f0a96S裕依     printf("st_mtim.sec= %ld\tst_mtim.nsec= %ld\n", (*st).st_mtim.tv_sec, (*st).st_mtim.tv_nsec);
31*bc6f0a96S裕依     printf("st_ctim.sec= %ld\tst_ctim.nsec= %ld\n", (*st).st_ctim.tv_sec, (*st).st_ctim.tv_nsec);
32be63f3b2Shoumkh 
33be63f3b2Shoumkh     return 0;
34be63f3b2Shoumkh }