CS2257 Operating System Lab
Exp# 1d stat system call
Aim To display file status using stat system call.
Algorithm
1. Get filename as command line argument. 2. If filename does not exist then stop. 3. Call stat system call on the filename that returns a structure 4. Display members st_uid, st_gid, st_blksize, st_block, st_size, st_nlink, etc., 5. Convert time members such as st_atime, st_mtime into time using ctime function 6. Compare st_mode with mode constants such as S_IRUSR, S_IWGRP, S_IXOTH and display file permissions. 7. Stop
Result Thus attributes of a file is displayed using stat system call.
http://cseannauniv.blogspot.com Vijai Anand CS2257 Operating System Lab
Program /* File status - stat.c */ #include
printf("User id : %d\n", file.st_uid); printf("Group id : %d\n", file.st_gid); printf("Block size : %d\n", file.st_blksize); printf("Blocks allocated : %d\n", file.st_blocks); printf("Inode no. : %d\n", file.st_ino); printf("Last accessed : %s", ctime(&(file.st_atime))); printf("Last modified : %s", ctime(&(file.st_mtime))); printf("File size : %d bytes\n", file.st_size); printf("No. of links : %d\n", file.st_nlink);
printf("Permissions : "); printf( (S_ISDIR(file.st_mode)) ? "d" : "-"); printf( (file.st_mode & S_IRUSR) ? "r" : "-"); printf( (file.st_mode & S_IWUSR) ? "w" : "-"); printf( (file.st_mode & S_IXUSR) ? "x" : "-"); printf( (file.st_mode & S_IRGRP) ? "r" : "-"); printf( (file.st_mode & S_IWGRP) ? "w" : "-"); printf( (file.st_mode & S_IXGRP) ? "x" : "-"); printf( (file.st_mode & S_IROTH) ? "r" : "-"); printf( (file.st_mode & S_IWOTH) ? "w" : "-"); printf( (file.st_mode & S_IXOTH) ? "x" : "-"); printf("\n");
if(file.st_mode & S_IFREG) printf("File type : Regular\n"); if(file.st_mode & S_IFDIR) printf("File type : Directory\n"); } http://cseannauniv.blogspot.com Vijai Anand CS2257 Operating System Lab
Output
$ gcc stat.c
$ ./a.out fork.c User id : 0 Group id : 0 Block size : 4096 Blocks allocated : 8 Inode no. : 16627 Last accessed : Fri Feb 22 21:57:09 2013 Last modified : Fri Feb 22 21:56:13 2013 File size : 591 bytes No. of links : 1 Permissions : -rw-r--r-- File type : Regular
http://cseannauniv.blogspot.com Vijai Anand