文件系统
通用:rename(原路径名,新路径名); 修改文件名
remove(路径名); 删除文件或路径
symlink(原路径名,符号链接名); 建立文件或路径的软链接
access(路径名,权限); 权限:F_OK(是否存在) R_OK W_OK X_OK 的任意组合
lstat/stat/fstat(路径名,struct stat *buf); 取得文件详细信息
xxx_t 一般是tepedef起的类型别名,绝大多数是整数类型的数据,目的是见面知意。一般在<sys/type.h>中定义
chmod(路径名,权限); 修改文件或目录的权限
getpwuid(uid)/getpwnam(用户名) 获取用户的信息
struct tm* localtime(time_t time); //UTC 转换为时分秒格式
time_t mktime(struct tm*); 本地时间转换成UTC
目录:
DIR* opendir(目录路径); //打开指定目录,返回一个指针代表这个目录打开,失败返回NULL。
struct dirent* readdir(DIR*); //一次从目录中读取一项(一个文件或目录)信息。返回一个结构体指针,指向包含目录入口信息的结构变量。
struct dirent的定义没有规定统一,但一定有一个d_name的成员保存文件或目录名,没有路径。读完了或失败返回NULL.
closedir(DIR*);
telldir/seekdir/... 头文件<dirent.h>
chdir(目录路径); //把当前目录设置为指定目录
getcwd(字符数组,数组长度); //取得当前路径,绝对路径
mkdir(目录路径, 权限); //按指定权限创建路径
rmdir(目录路径); //删除指定的空目录
文件:
unlink(文件路径) //删除文件
ssize_t readlink(const char* path, char* buf, size_t buf_size); //读软链接文件(目标路径)到buf(不会自动加\0)
int open(const char * path, int mode[,权限]) //打开文件,返回一个文件描述符,失败返回-1
打开方式:O_RDONLY = 0,O_WRONLY=1,O_RDWR=2三选一,O_APPEND追加 O_CREAT文件不存在就创建 O_TRUNC以写方式打开文件时,情空原有文件内容
O_EXCL和O_CREAT一起表示必须新建一个文件,如果文件已经存在打开就失败 O_NONBLOCK不阻塞
ssize_t wirte(int fd, char *buf, size_t buf_size); //返回成功写入文件的字节数,失败返回-1
ssize_t read(int fd, char *buf, size_t buf_size) //依次读取数据,返回读取的字节数,失败返回-1,返回0表示读到文件尾。
int close(int fd); //关闭一个打开的文件,清空文件缓存区
void sync(void); //文件缓存写到磁盘
int fsync(int fd); //文件缓存写到磁盘
void syncfs(int fd); //文件缓存写到磁盘
lseek(int fd, off_t offset, int whence) //指定一个打开文件的下次开始读写的位置,参考点:SEEK_SET SEEK_CUR SEEK_END,
返回从文件头开始的偏移量 允许指定超过文件尾的偏移,中间部分会形成空洞,数据为0。
int truncate(const char *path, off_t length) //截断文件成指定大小
ftruncate(int fd, off_t length) //截断文件成指定大小
umask(mode) //设置文件创建时需要屏蔽的权限
dup dup2 //复制文件描述符
特殊文件描述符:0标准输入设备文件 1标准输出设备文件 2标准错误输出设备文件
标准输出从定向:
> /dev/null
> /dev/null 2> dev/null
> /dev/null 2>&1
>& /dev/null
特殊文件:/dev/tty当前设备终端 /dev/pts/n标号为n的虚拟终端 /dev/null空设备文件 /dev/zero
fcntl(文件描述符,命令,结构指针struct flock*) //功能很多,一般用于给文件加锁
int fcntl(int fd, int cmd, .../*arg*/); // cmd: F_GETLK(取得锁信息)/F_SETLK(加锁)/F_SETLKW(加锁直到成功为止)
struct flock
{
l_type; //锁类型,F_RDCLK F_WRCLK F_UNCLK; 多个读锁可以共存,多个写锁和读锁不能同时存在,谁加的锁谁解
l_start; //开始位置
l_whence; //偏移位置
l_len; //加锁字节长度
l_pid; //哪个进程加的锁
}
ioctl //调用驱动程序接口,不用驱动使用的参数及其含义不同
int ioctl(int fd, unsigned long request, ...);
文件操作:
系统 read write
C语言 fread fwrite fgetc fputc fgets fputs fscanf fprintf
C++ ifstrean ofstream
mmap:可以把文件映射到内存中,可以像内存一样访问文件。
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
int munmap(void *addr, size_t length);
linux文件系统的处理函数
最新推荐文章于 2024-03-28 17:47:33 发布