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 }