企业网站 三网系统,年轻人最喜欢的网页,永嘉规划建设局网站,永久免费观看不收费的软件app系统文件函数
stat函数
指针如果没有const一般表示传出参数#xff0c;如果加const表示传入参数 struct stat
dev_t st_dev文件设备编号ino_t st_ino节点 inode号是唯一的#xff0c;每个inode节点的大小一般是128字节活着256字节#xff0c;一般文件每2KB就设置一个ino…系统文件函数
stat函数
指针如果没有const一般表示传出参数如果加const表示传入参数 struct stat
dev_t st_dev文件设备编号ino_t st_ino节点 inode号是唯一的每个inode节点的大小一般是128字节活着256字节一般文件每2KB就设置一个inodemode_t st_mode文件类型和存取权限16bite4bite文件类型 bit特殊权限位 3*4bit访问权限nlink_t st_nlink文件的硬链接数目uid_t st_uid用户IDgid_t st_gid组IDdev_t st_rdev若文件为设备文件则为其设备编号off_t st_size文件字节数blksize_t st_blksize块大小文件系统的I/O缓冲区大小blkcnt_t st_blocks快数time_t st_atime最后一次访问时间time_t st_mtime最后一次修改时间time_t st_ctime最后一次改变时间指属性包括访问修改内容修改类型等
stat函数和lstat函数的区别对于软链接前者是穿透追踪函数后者是不穿透不追踪函数
access测试文件是否有某种权限
chmod 改变文件权限
可以使用第章strtol函数将字符串转化为数字
chown 改变文件所有者
可以查看passwd文件详见手册第章
truncate函数
文件的截取和拓展
#include unistd.h
#include sys/types.hint truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);多出来的方式仍然是以空洞的方式储存
link函数
创建硬链接
#include unistd.hint link(const char *oldpath, const char *newpath);#include fcntl.h /* Definition of AT_* constants */
#include unistd.hint linkat(int olddirfd, const char *oldpath,int newdirfd, const char *newpath, int flags);symlink 函数
创建软链接
readlink 函数
读一个软链接
unlink 函数
如果是软链接则删除软链接 如果是硬链接则删除当前硬链接硬链接数减一当减为0时释放数据块和inode 使用unlink可以制作临时文件如果文件硬链接数为0但有进程已经打开文件并且持有文件描述符则等该进程关闭文件时kernel才真正删除文件因此可以先open|creat一个文件然后再使用文件描述符操作该文件同时使用unlink函数删去则创造出了一个临时文件
每一次unlink其实是删除一个目录项denty,当所有占用该文件的进程使用结束或者进程关闭文件才会失效
操作文件的时候需要注意文件指针尤其是写操作以后想要读取的时候
rename函数
目录操作函数
chdir函数
相当于cd命令改变的是所在进程的路径而不是终端的路径
getcwd函数
相当于pwd命令获取进程当前目录
mkdir函数
需要注意创建的目录需要有执行权限否则无法进入目录
rmdir函数
删除一个空目录
opendir函数下面开始变成手册第三章的函数了
成功返回一个DIR指针失败返回NULL
readdir函数
读取目录内容返回一个结构体struct dirent
ino_t ino目录的inodeff_t d_off目录文件开头到此目录进入点的位移signed short int d_reclend_name的长度unsigned char d_type 文件的类型
closedir函数
dup 和dup2
查阅手册第二章 用于复制文件描述符可以让多个文件描述符指向同一个文件
dup(old fd)函数返回一个文件描述符指向旧文件描述符所指向的文件返回的是所有未占用的文件描述符中最小的一个 dup2(old fd,new fd)函数指向新的文件描述符如果新文件描述符原本指向一个文件则将该文件释放再指向旧文件描述符所指向的文件。如果new和old是同一个文件描述符则不会关闭。
虽然可能有多个文件描述符但是只有一个文件指针
这里的文件覆盖并不是清空而是在原来文件上面写
fcntl函数
改变已经打开的文件的属性
复制一个现有的文件描述符获得/设置文件描述符标记获得/设置文件状态标记
int fcntl(int fd,,int cmd,long arg)cmdF_GETFLarg0就可以返回文件的状态flagfcntl(fd,F_GETFL,0) cmdF_SETFLargflag|O_APPEND/O_NONBLOCK O_APPEND在末尾追加
获得/设置异步I/O所有权获得/设置记录锁