Linux---stat函数以及自己实现stat
St_mode函数 S_IFMT 0170000 文件类型的位 S_IFSOCK 0140000 socket S_IFLNK 0120000 符号链接(symbolic link) S_IFREG 0100000 一般文件 S_IFBLK 0060000 区块装置(block device) S_IFDIR 0040000 目录 S_IFCHR 0020000 字符装置(character device) S_IFIFO 0010000 先进先出(fifo) S_ISUID 0004000 文件的(set user-id on execution)位 S_ISGID 0002000 文件的(set group-id on execution)位 S_ISVTX 0001000 文件的sticky位 S_IRWXU 00700 文件所有者的遮罩值(即所有权限值) S_IRUSR 00400 文件所有者具可读取权限 S_IWUSR 00200 文件所有者具可写入权限 S_IXUSR 00100 文件所有者具可执行权限 S_IRWXG 00070 用户组的遮罩值(即所有权限值) S_IRGRP 00040 用户组具可读取权限 S_IWGRP 00020 用户组具可写入权限 S_IXGRP 00010 用户组具可执行权限 S_IRWXO 00007 其他用户的遮罩值(即所有权限值) S_IROTH 00004 其他用户具可读取权限 S_IWOTH 00002 其他用户具可写入权限 S_IXOTH 00001 其他用户具可执行权限 摘自《Linux C 函数库参考手册》
返回值:成功返回0,失败返回-1.
一旦给出pathname,stat函数将返回与此命名文件有关的信息结构,比如struct stat *statbuf;
文件属性:
/*************************************************************************
> File Name: my_chmod.c P162
> Author:
> Mail:
> Created Time: 2017年07月14日 星期五 15时42分34秒
************************************************************************/
#include<stdio.h>
#include<time.h>
#include<sys/stat.h>
#include<unistd.h>
#include<sys/types.h>
#include<errno.h>
#include<stdlib.h>
int main(int argc, char **argv)
{
struct stat buf;
/*检查参数个数*/
if(argc!=2)
{
perror("Usage:my_stat <filename>
");
exit(1);
}
/*获取文件属性*/
if( stat(argv[1], &buf) ==-1 )
{
perror("stat:");
exit(1);
}
/*打印文件属性*/
printf("device is: %d
",buf.st_dev);//文件设备编号
printf("inode is : %d
",buf.st_ino);//文件i节点标号
printf("mode is: %o
",buf.st_mode);//文件类型与存取权限
printf("number of hard links is: %d
",buf.st_nlink);//硬链接数目
printf("user ID of owner is: %d
",buf.st_uid);//用户所有者的用户id
printf("group ID of owner is: %d
",buf.st_gid);//用户所有者组id
printf("device type (if inode device )is: %d
",buf.st_rdev);//若为设备文件则为设备编号
printf("total size ,in bytes is: %d
",buf.st_size);//文件大小,以字节计算
printf("blocksize for filesystem I/O is: %d
",buf.st_blksize);//文件系统IO缓冲区大小
printf("number of blocks allocated is: %d
",buf.st_blocks);//占有文件区块个数,一般一个区块大小通常512字节
printf("time of lasst access is: %s",ctime(&buf.st_atime));//文件最近一次被访问时间
printf("time of last modification is: %s",ctime(&buf.st_mtime));//最后一次被修改的时间
printf("time of last chage is: %s",ctime(&buf.st_ctime));//最近一次被更改时间
return 0;
}声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
