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; }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: WriteFile写文件乱码问题
- 下一篇: writeFile写入打开成乱码