Unix/Linux编程实践教程二 文件与目录的操作

本文详细介绍了如何在操作系统中操作文件和目录,包括列出目录内容、读取文件属性及修改这些属性的方法。还讲解了如何使用C语言API来实现这些功能,如opendir, readdir, closedir等用于目录操作,以及stat, chmod, chown等用于文件属性的获取和修改。
目录与文件属性

如何列出目录的内容?
如何读取并显示文件的属性?
给出一个名字,如何判断出是文件还是目录?

目录是一种特殊的文件,它的内容是文件和目录的名字。包含很多记录,每个记录的格式由统一的标准定义,每条记录的内容代表一个文件或目录。每个目录都至少包括两个特殊的项:.(当前目录)和..(上一级目录)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值