文件状态信息
2016-01-12 19:52
423 查看
文件状态信息
例1:
mystat.c
编译/链接/执行后, 输出结果如下:
![](http://images2015.cnblogs.com/blog/864242/201601/864242-20160110233501715-1773191087.png)
观察输出结果, 与前面的命令的输出结果一致
例2: chmod接口API
mychmod.c
编译链接执行, 输出结果如下:
![](http://images2015.cnblogs.com/blog/864242/201601/864242-20160110234327121-996338015.png)
文件的读写等属性发生改变
例3: chown接口API
mychown.c
编译链接执行, 结果输出如下:
![](http://images2015.cnblogs.com/blog/864242/201601/864242-20160110235514465-810347367.png)
文件的拥有者属性发生变化
例1:
mystat.c
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <sys/stat.h> #include <unistd.h> #include <sys/types.h> #include <errno.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc, char *argv[]) { struct stat buf; if (argc != 2) { printf("Usage: my_stat <filename>\n"); exit(0); } int ret = stat(argv[1], &buf); ERROR(ret == -1); printf("device is: %d\n", buf.st_dev); printf("inode is: %d\n", buf.st_ino); printf("mode is: %o\n", buf.st_mode); printf("number of hard links is: %d\n", buf.st_nlink); printf("user ID of owner is: %d\n", buf.st_uid); printf("group ID of owner is: %d\n", buf.st_gid); printf("device type (if inode device) is: %d\n", buf.st_rdev); printf("total size, in bytes is: %d\n", buf.st_size); printf(" blocksize for filesystem I/O is: %d\n", buf.st_blksize); printf("number of blocks allocated is: %d\n", buf.st_blocks); printf("time of last access is: %s", ctime(&buf.st_atime)); printf("time of last modification is: %s", ctime(&buf.st_mtime)); printf("time of last change is: %s", ctime(&buf.st_ctime)); return 0; }
编译/链接/执行后, 输出结果如下:
![](http://images2015.cnblogs.com/blog/864242/201601/864242-20160110233501715-1773191087.png)
观察输出结果, 与前面的命令的输出结果一致
例2: chmod接口API
mychmod.c
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc, char ** argv) { int mode; int mode_u; int mode_g; int mode_o; mode = atoi(argv[1]); mode_u = mode / 100; mode_g = (mode - (mode_u*100)) / 10; mode_o = mode - (mode_u*100) - (mode_g*10); mode = (mode_u * 8 * 8) + (mode_g * 8) + mode_o; int ret = chmod(argv[2], mode); ERROR(ret == -1); return 0; }
编译链接执行, 输出结果如下:
![](http://images2015.cnblogs.com/blog/864242/201601/864242-20160110234327121-996338015.png)
文件的读写等属性发生改变
例3: chown接口API
mychown.c
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc,char *argv[]) { //int ret = chown(argv[1],500,500); int ret = chown(argv[1],7,7); ERROR(ret == -1); return 0; }
编译链接执行, 结果输出如下:
![](http://images2015.cnblogs.com/blog/864242/201601/864242-20160110235514465-810347367.png)
文件的拥有者属性发生变化
相关文章推荐
- 关于动态布局的时候调整布局的错误(一)
- android的adb命令
- SVN服务器搭建和使用(三)
- onEnter, onExit
- 游戏客户器端通信框架(C++与Socket)
- 易忽略
- 笨办法学Python学习笔记 练习19
- Android studio 上 EventBus的初步使用
- 自定义线性菜单 LinearMenu 仿触手tv菜单效果
- linuxmint 执行 qmake 报错
- SVN服务器搭建和使用(二)
- 插入排序
- js初学笔记第一课
- Unity3D角色换装及换装编辑器
- 刚体的平面运动
- [Redux] React Todo List Example (Toggling a Todo)
- const,static,extern简介(重要)
- 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案
- POJ1469COURSES
- SparkMLlib之三:协同过滤