lseek,可实现计算文件长度,以及文件扩展。
int ret = lseek(fd, 0, SEEK_END); //文件长度 printf("file lendth = %d\n", ret);
int ret = lseek(fd, 2000, SEEK_END); //文件拓展2000个byte 在文件末尾偏移2000 printf("return value %d\n", ret); //实现文件拓展,需要在最后做一次写操作 write(fd, "a", 1);
//最后有原长度加2001大小 a在最后其余为空洞
stat,显示文件的基础信息,可作为命令使用(stat english 显示english文件的信息)
头文件:<sys/types.h> <sys/stat.h> <unistd.h>
函数有:int stat(const chat *path, struct stat *buf); //buf为传出参数 由于函数向外输出相应信息
int fstat(int fd, struct stat *buf);
int lstat(const char *path, struct stat *buf);
stat与lstat的区别是,stat遇到软连接时追踪原文件,显示原文件的大小。lstat显示软连接的大小。
struct stat{ dev_t st_dev;//文件的设备标号 ino_t st_ino;//节点 mode_t st_mode;//文件类型和储存权限 nlink_t st_nlink;//硬链接数目 uid_t st_uid;//用户ID gid_t st_gid;//组ID ..... }
access,测试文件是否拥有某种权限,读、写、执行、是否存在
头文件:<unistd.h>
函数:int access(const char *pathname, int mode);
mode, R_OK是否读、W_OK是否写、X_OK是否可执行、F_OK是否存在
存在为0,失败为-1
chmod,修改文件权限
strtol,将字符串转换为相应进制的数
<stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
nptr为字符串,endptr通常为空,base为想要转成的进制