目录与文件属性
如何列出目录的内容?
如何读取并显示文件的属性?
给出一个名字,如何判断出是文件还是目录?
目录是一种特殊的文件,它的内容是文件和目录的名字。包含很多记录,每个记录的格式由统一的标准定义,每条记录的内容代表一个文件或目录。每个目录都至少包括两个特殊的项:.(当前目录)和..(上一级目录)
opendir(char *)
readdir (DIR *)
closedir
seekdir//与lseek的功能相似
telldir
rewinddir
目录中记录的类型是struct dirent /usr/include/dirent.h
DIR *dir_ptr;
struct dirent *direntp;
if((dir_ptr=opendir(dir_ptr))==NULL)
fprintf(stderr,"......%s...",dirname);
direntp=readdir(dir_ptr)//读取目录中的记录
direntp->d_name;//读取目录中文件的名字
qsort库函数的使用
读取文件的属性
struct stat;
/usr/include/sys/stat.h
st_mode 文件类型和许可权限
st_uid 用户所有者ID
st_gid 所属组ID
st_size 所占的字节数
st_nlink 文件链接数
st_mtime 文件最后修改时间
st_atime 文件最后访问时间
st_ctime 文件属性最后修改时间
st_mode 16bit
前4位为文件类型
接下来3位是文件的特殊属性,1代表具有某个属性,0代表没有,3位分别是set-u-id,set-g-id,sticky位
最后的9位是访问权限
getpwuid需要UID作为参数,返回一个指向struct passwd 的指针,这个结构的定义在/usr/include/pwd.h中
getgrgid(gid)
**********************修改文件的属性************************************
改变文件的模式:
chmod("/tmp/myfile",04764);
修改文件的所有者和组
#include<unistd.h>
int chown(char *path,uid_t owner,gid_t group);
chown chgrp命令
修改文件的时间
int utime(char *path,struct utimbuf *newtimes);
touch命令可以进行对最后修改时间和最后访问时间进行修改
修改文件或目录名,系统调用rename还可以移动文件的位置
int result=rename(cha *old,char *new);
转载于:https://www.cnblogs.com/wangtianxj/archive/2009/09/01/1558334.html