Linux应用软件编程-文件操作(文件io)
文件io:操作系统为了方便用户使用系统功能而对外提供的一组系统函数,称之为系统调用,其中有一组对文件的操作,称为文件IO,一般都是对设备文件操作,当然也可以对普通文件进行操作。
即一个基于Linux内核的没有缓存的IO机制。
这里主要说一下文件io的操作方法(函数接口):
1.打开文件:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
功能:打开一个文件,获取一个文件描述符
参数:
pathname:要打开的文件
flags:
O_RDONLY : 只读
O_WRONLY: 只写
O_RDWR : 读写
O_CREAT :不存在则创建
O_TRUNC : 清空文件
O_APPEND:追加写
"r" : O_RDONLY;
"r+" : O_RDWR ;
"w" : O_WRONLY | O_CREAT | O_TRUNC ; 0664
"w+" : O_RDWR | O_CREAT | O_TRUNC ; 0664
"a" : O_WRONLY | O_CREAT | O_APPEND; 0664
"a+" : O_RDWR | O_CREAT | O_APPEND; 0664
mode:对文件的操作权限,当flags中有 O_CREAT标志时,必须填写mode参数(0777)
返回值:成功:文件描述符;失败:-1
文件描述符:系统为已打开的文件分配的标识符,是一个非负的整形数据,为0-1023;最小未被使用原则;使用完时及时释放,避免文件描述符溢出。
系统默认已经打开的3个文件描述符:
int FILE *
STDIN_FILENO------->0 : 标准输入设备 -----》(stdin)
STDOUT_FILENO---->1 :标准输出设备 -----》(stdout)
STDERR_FILENO---->2:标准出错设备 -----》(stderr)
2.文件读写:
(1)ssize_t write(int fd, const void *buf, size_t count);
功能:向文件中写入数据
参数:
fd:要写入的文件描述符
buf:写入的数据首地址
count:期望写入的字节数
返回值:成功:实际写入的字节数;失败:-1
(2)ssize_t read(int fd, void *buf, size_t count);
功能:从文件中读数据
参数:
fd:需要读的文件描述符
buf:存储读到数据的空间首地址
count:期望读取的字节数
返回值:成功:实际读取的字节数;失败:-1;读到文件末尾:0
3.文件定位函数:
off_t lseek(int fd, off_t offset, int whence);
功能:实现文件操作位置偏移
参数:
fd:文件
offset:偏移量
whence:偏移的相对位置:SEEK_SET,SEEK_CUR,SEEK_END
返回值:成功:返回文件当前操作位置到文件开头的偏移量;失败:-1
4.关闭文件:
int close(int fd);
功能:关闭文件描述符
原文地址:https://blog.csdn.net/hc_bmxxf/article/details/144725925
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!