Chinaunix首页 | 论坛 | 博客
  • 博客访问: 308527
  • 博文数量: 55
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-07 13:47
文章分类
文章存档

2011年(1)

2010年(2)

2009年(14)

2008年(38)

我的朋友

分类: LINUX

2008-05-01 00:45:56

基本的文件操作

文件描述符

stdin0)、stdout1)、stderr2

#include

STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO三个宏分别表示012,为了更好的可读性,但是在编程的时候大多数都选择直接使用012

操作文件的参数

关闭文件:int close(int fd)

打开文件:包含在头文件:#include

int open(char * pathname, int flags, mode_t mode):成功打开时候,返回一个指向pathname的文件描述符(大于0的数字),可以理解为类似于指针的东西。若不成功,则返回一个小于0的数字保存在errno变量中。flagsO_RDONLY,O_RDWR,O_WRONLY,O_CREAT(如果文件不存在,则创建文件,且为常规文件),O_EXCL(和creat一起使用,若文件已经存在文件系统中,则创建失败),O_NOCTTY(打开的文件不会成为进程的终端,只在没有任何控制终端的进程在试图打开一个终端的时候起作用,其他情况下被忽略),O_TRUNC(若被打开的文件已经存在,则把源文件中所有内容丢弃,文件大小设置为0,O_APPEND(所有的写操作都是在文件的末端进行),O_NONBLOCK(文件以非阻塞的方式打开,一般文件经常被阻塞),O_SYNC(一般情况下内核是捕获写命令的,在方便的时候写回硬件,这样提高了性能,但是与立即把数据写到硬件相比来说,丢失数据的可能性会更大一点,若使用此标志,就立即写回)

int creat(char *pathname, mode_t mode)mode创建文件的访问权限。

等价于openpathnameO_CREAT|O_WRONLY|O_TRUNC,mode,open的用法更为方便。

文件的读写与位置指针的移动:

#include

size_t read(int fd, void *buf ,size_t length)

size_t write(int fd, const void *buf, size_t length)

上面发生错误时候均返回-1

linux文件分为两类:可定位以及不可定位;不可定位的文件不支持随机读写,比如先进先出的管道,在输入端写入,在输出端读出。可定位允许在文件的任何位置读写,块设备等。可定位的文件打开时,默认为文件最开始处(即偏移为0),若读10个字节后,偏移为10,若再写入5个字节则在15个位置。若当前在文件的末尾,此时进程试图读文件的时候,read返回0,不是出错的信息,若此时写文件,则文件大小变大,当前位置向文件新的末尾处。

int lseek(int fd, off_t offset, int whence)对文件描述符当前位置进村进行操作,返回相对于开始位置的新的偏移值,

SEEK_SET(文件起始位置), SEEK_CUR(文件的当前位置), SEEK_END(文件的末尾),此为第三个参数的值。

局部读写      

int truncate(const char *pathname, size_t length);

int ftruncate(int fd, size_t length)//这两个函数将文件缩短,变为长度为冷天哈的文件。


int fsync(int fd)

int fdatasync(int fd)//此两个文件把文件同步。

阅读(1093) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~