Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129530
  • 博文数量: 44
  • 博客积分: 956
  • 博客等级: 准尉
  • 技术积分: 521
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-18 12:45
文章分类
文章存档

2012年(11)

2011年(33)

分类: LINUX

2011-12-29 17:54:45

文件描述符:文件描述符是一个非负的整数,当打开或创建一个文件时,内核向进城返回一个描述符,用以标识该文件。
一般内核调用,成功返回0,失败返回-1
打开和创建文件:
返回文件描述符
flags: O_RDONLY:只读,文件必须存在
       O_WRONLY:读写,文件必须存在
       O_CREAT:创建
       O_TRUNC:截止
       O_APPEND:追加
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
 
文件关闭:int close(int fd);
 int fd: 文件描述符;
 
文件读写:
ssize_t read(int fd, void *buf, size_t size);
ssize_t write(int fd, void *buf, size_t size);
返回:成功读写的字节数;
int fd:文件描述符
void *buf:读写缓冲
size_t size:每次读写的最大字节数(write的该参数为read的返回值)
 
文件定位:
off_t lseek(int fd, off_t offset, int wherece);
返回:文件当前的读写位置
int fd:文件描述符;
off_t offset:偏移量,+向后偏,-向前偏
int wherece:偏移基准:SEEK_SET文件头,SEEK_CUR当前位置,SEEK_END文件末尾
 
获取文件的属性信息:
int stat(const char *filename, struct stat *buf);
int fstat(int fd, struct stat *buf);
int lstat(const char *filename, struct stat *buf);
第一个参数:要获取信息的文件,第二个函数是以文件描述符获取
struct stat *buf:所获取的信息存放的结构体
 
测试文件的权限:
int access(const char *pathname, int amode);
const char *pathname:文件的路径和名称
int amode:需要测试的项目
           F_OK:测试文件是否存在
           R_OK: 测试文件是否可读
           W_OK: 测试文件是否可写
           X_OK: 测试文件是否可执行
 
设置进程创建文件的屏蔽码:
mode_t umask(mode_t cmask);
 
修改文件的权限
int chmod(const char *path, mode_t mode);
int fchmod(int fd, mode_t mode);
 
修改文件的拥有者和拥有组
int chown(const char *path, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(const char *path, uid_t owner, gid_t group);
 
文件截取:
int truncate(const char *path, off_t len);
int ftruncate(int fd, off_t len);
当len小于文件原长度时,len之后的数据将被截断
当len大于文件原长度时,文件的长度增加到len,在原文件之后的区间为空
 
创建硬链接:
int link(const char *path1, const char *path2);
为path1创建一个硬链接path2
创建软连接:
int symlink(const char *path1, const char *path2);
为path1创建一个软链接path2
 
删除链接:
int unlink(const char *path);
删除名为path的链接
 
删除文件
int remove(const char *path);
删除path文件
 
重命名:
int remove(const char *old, const char *new);
将文件old重命名为new
 
 
 
阅读(1278) | 评论(0) | 转发(0) |
0

上一篇:标准IO(16)

下一篇:struct tm

给主人留下些什么吧!~~