一、前言
文件I/O编程是linux开发的一个核心阶段,也是学习linux系统编程的入门阶段。文件I/O编程贯穿了整个linux系统编程,是我们必须掌握的。linux不同于windows,是因为在linux下有一个非常重要的概念——一切皆文件!
二、函数
open
原型:int open(const char *pathname, int flags)
int open(const char *pathname, int flags, mode_t mode)
头文件:#include <sys/types.h>,#include <sys/stat.h>,#include <fcntl.h>
功能:打开文件(若文件不存在则创建一个文件并打开)
返回值:成功返回文件描述符(一个非负数),失败返回-1
参数:pathname,所要打开或创建的文件的全路径
flags,设置打开或创建文件的属性
mode,创建文件时才存在,设置创建好的文件所具有的权限
关于flags的选项,这里介绍几个常用的选项,其他选项需要到再查用法:由O_RDONLY(只读)、O_WRONLY(只写)、O_RDWR(读写)的一个与下列一个或多个构成或运算
1、O_APPEND:每次写时都追加到文件内容尾
2、O_CREAT:若文件不存在,则创建一个
3、O_EXCL:测试所要打开的文件是否存在,与O_CREAT搭配时,若不存在则创建文件,反之出错
creat
原型:int creat(const char *pathname, mode_t mode)
头文件:#include <sys/types.h>,#include <sys/stat.h>,#include <fcntl.h>
功能:创建文件,默认已只写方式创建文件
返回值:成功返回文件描述符(一个非负数),失败返回-1
参数:pathname,所要打开或创建的文件的全路径
mode,设置新文件的权限
close
原型:int close(int fd)
头文件: #include <unistd.h>
功能:关闭打开的文件描述符
返回值:成功返回0,失败返回-1
参数:fd,之前打开或创建文件所返回的文件描述符
注:当一个进程结束时,都会由内核自动关闭这个进程打开的所有文件,为了避免出现一些隐晦的错误,这里推荐使用close函数来关闭文件描述符。
三、实例
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd;
char *path = "./text.txt";
/*
open or creat
*/
if((fd = open(path, O_RDWR|O_CREAT, 0777)) < 0)
{
printf("Creat and open %s is failed!\n", path);
exit(1);
}else
printf("Creat and open %s is success!\n", path);
close(fd);
return 0;
}
运行结果: