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