fstatvfs

#include < sys/statvfs.h >

#include < sys/types.h >
#include < sys/stat.h >
#include < fcntl.h >
#include < stdio.h >

int main()
{
    int fd;
    struct statvfs buf;
    
    if((fd = open(".", O_RDONLY)) < 0){
        perror("open");
        return 1;
    }
    
    if (fstatvfs(fd, &buf) < 0){
        perror("fstatvfs");
        return 1;
    }
    
    printf(
    (sizeof(fsblkcnt_t) == 8) ?(
           "f_bsize = %lu, f_frsize = %lu,\n"
            "f_blocks = %llu, f_bfree = %llu, f_bavail = %llu, \n"
                                "f_files = %llu, f_ffree = %llu, f_favail = %llu,\n"
                                "f_fsid = %lx, f_flag= %lx, f_namemax = %lu\n"
                                ) : (
                                     "f_bsize = %lu, f_frsize = %lu,\n"
                                     "f_blocks = %llu, f_bfree = %lu, f_bavail = %lu, \n"
                                     "f_files = %lu, f_ffree = %lu, f_favail = %lu,\n"
                                     "f_fsid = %lx, f_flag= %lx, f_namemax = %lu\n"
           ),
           buf.f_bsize, buf.f_frsize,
           buf.f_blocks, buf.f_bfree, buf.f_bavail,
           buf.f_files, buf.f_ffree, buf.f_favail,
           buf.f_fsid, buf.f_flag, buf.f_namemax
           );
    return 0;
}