unix编程(二)文件和目录
2016-04-21 18:35
274 查看
stat函数 lstat函数
这两个函数都是统计文件信息,区别是当文件时符号链接的时候stat统计的是符号链接的文件,而lstat统计的是符号链接本身。统计文件得到的数据类型是stat结构体,其中有一个mode_t是文件类型,我们可以通过宏比如:S_ISREG()代表普通文件 S_ISDIR():目录文件等
文件访问权限
在上一章create函数最后有一个mode参数,可以指定文件的访问权限。这里mode:
S_IRUSR:用户读
S_IWUSR:用户写
S_IXUSR:用户执行
S_IRGRP: 组读
.....
...
S_IROTH:其他读
函数access
access(const char* pathname, int mode );可以测试文件的执行权限:R_OK, W_OK, X_OK测试读、写、执行权限
函数umask
一个进程用来屏蔽权限的#define RWRWRW (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) int main(void) { umask(0);//什么都没有屏蔽 if (create("foo", RWRWRW) < 0) err_sys("create error for foo"); umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);//屏蔽了组读写,和其他的读写 if (create("bar", RWRWRW) <0) err_sys("create error for bar"); exit(0); }
最后上面那个程序,foo的权限是rwrwrw,而bar的权限是rw-------
link函数
创建一个硬链接,删除一个文件的时候只有所有的链接全部没有了才会删除那个文件unlink函数
将文件的链接数减1,当文件的链接数为1,但是进程还打开这个文件这个文件也不会删除。因此可以在一个进程中打开一个文件,然后直接unlink,当进程终止的时候,会把这个文件直接删除。
symlink函数
创建符号链接为什么会有符号链接?
1. 因为硬链接只能在同一个文件系统
2.只有root才能建硬链接
读目录
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <dirent.h>
int main(int argc,char *argv[])
{
DIR * dp;
struct dirent *filename;
dp = opendir(argv[1]);
if (!dp)
{
fprintf(stderr,"open directory error\n");
return 0;
}
while (filename=readdir(dp))//读到null代表结束了
{
printf("filename:%-10s\td_info:%ld\t d_reclen:%us\n",
filename->d_name,filename->d_ino,filename->d_reclen);
}
closedir(dp);
return 0;
}上面读取文件也会读取到 . 和 .. 这两个目录的
相关文章推荐
- [PDO绑定参数]使用PHP的PDO扩展进行批量更新操作
- 使用Eclipse的Generator MyBatis/iBatis Artifacts插件自动生成代码,与spring集成
- java学习之泛型
- struts2中的addActionError 、addFieldError、addActionMessage的方法
- java保留两位小数
- java并发之原子性、可见性、有序性
- Spark Streaming开发入门——WordCount(Java&Scala)
- 实用的Myeclipse10 优化设置
- 常用颜色代码
- Python 装饰器
- C语言里的指针
- spring如何对普通类进行注入
- C和指针第一章编程练习
- C和指针第二章编程练习
- Java IO最详解
- C和指针第四章编程练习
- 数字图像处理,相位相关图像配准算法的C++实现
- php如何使用 phpqrcode 生成二维码
- python 字符串常用操作汇总
- Lua编译安装(MAC平台)