diff options
[SP/P02] Solved exercises from second practice
1 files changed, 30 insertions, 0 deletions
| -rw-r--r-- | Year 3/System programming/Practice02/ex3-stat.c | 30 |
diff --git a/Year 3/System programming/Practice02/ex3-stat.c b/Year 3/System programming/Practice02/ex3-stat.c new file mode 100644 index 0000000..24a7777 --- /dev/null +++ b/Year 3/System programming/Practice02/ex3-stat.c @@ -0,0 +1,30 @@ +#include <sys/stat.h> // stat, struct stat, S_ISREG, ... +#include <stdio.h> // printf, perror + +int main(int argc, char* argv[]) { + for (int i = 1; i < argc; i++) { + struct stat buf; + if (stat(argv[i], &buf) < 0) { + perror("stat"); + return 1; + } + + printf(" File: %s\n", argv[i]); + printf(" Size: %ld\tBlocks: %ld\tIO Block: %ld\t", buf.st_size, buf.st_blocks, buf.st_blksize); + + if (S_ISREG(buf.st_mode)) printf("regular file"); + else if (S_ISDIR(buf.st_mode)) printf("directory"); + else if (S_ISCHR(buf.st_mode)) printf("character special file"); + else if (S_ISBLK(buf.st_mode)) printf("block special file"); + else if (S_ISFIFO(buf.st_mode)) printf("fifo"); + else if (S_ISLNK(buf.st_mode)) printf("symbolic link"); + else if (S_ISSOCK(buf.st_mode)) printf("socket"); + printf("\n"); + + printf("Device: %ld\tInode: %ld\tLinks: %ld\n", buf.st_dev, buf.st_ino, buf.st_nlink); + printf("Access: %u\tUid: %u\tGid: %u\n", buf.st_mode, buf.st_uid, buf.st_gid); + printf("Access: %ld\n", buf.st_atime); + printf("Modify: %ld\n", buf.st_mtime); + printf("Change: %ld\n", buf.st_ctime); + } +} |
