The system call stat function is designed to retrieve statistics of a file or a directory.
Simply add the path of your file or directory in the first parameter, then the variable of type struct stat in the second parameter.
The function stat returns 0 on success and -1 on error.
Let's try an example of the system call stat function:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int c, char *v[])
{
struct stat *buf;
buf = malloc(sizeof(*buf));
if (stat(v[1], buf) == 0)
{
printf("buf->st_dev = %d\n", buf->st_dev);
printf("buf->st_ino = %d\n", buf->st_ino);
printf("buf->st_mode = %d\n", buf->st_mode);
printf("buf->st_nlink = %d\n", buf->st_nlink);
printf("buf->st_uid = %d\n", buf->st_uid);
printf("buf->st_gid = %d\n", buf->st_gid);
printf("buf->st_rdev = %d\n", buf->st_rdev);
printf("buf->st_size = %d\n", buf->st_size);
printf("buf->st_blksize = %d\n", buf->st_blksize);
printf("buf->st_blocks = %d\n", buf->st_blocks);
printf("buf->st_atime = %d\n", buf->st_atime);
printf("buf->st_mtime = %d\n", buf->st_mtime);
printf("buf->st_ctime = %d\n", buf->st_ctime);
}
return (0);
}
You are now ready to create a file, named hello.bp (the extension is free of course).
Open it and write helloWorld inside.
Close it then compile and execute it:
$ gcc main.c && ./a.out hello.bp
Result will be something like that:
buf->st_dev = 64769 buf->st_ino = 6513 buf->st_mode = 33188 buf->st_nlink = 1 buf->st_uid = 75327 buf->st_gid = 32015 buf->st_rdev = 0 buf->st_size = 10 buf->st_blksize = 4096 buf->st_blocks = 8 buf->st_atime = 1302165784 buf->st_mtime = 1302165745 buf->st_ctime = 1302165745
For example, the st_size is the size in octet of the file itself. In this case: 10 (we have 10 letters of 1 octet each).
The st_atime is the moment of the last access of the file in the time format (seconds left since 1970).
Add new comment