一起talk C栗子吧(第一百三十九回:C语言实例--文件操作:基于文件描述符二)
程序员文章站
2022-12-05 10:06:49
各位看官们,大家好,上一回中咱们说的是基于文件描述符进行文件操作的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起talk c栗子吧!
看官们,我们在上一回中介绍...
各位看官们,大家好,上一回中咱们说的是基于文件描述符进行文件操作的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起talk c栗子吧!
看官们,我们在上一回中介绍了文件描述符,今天我们将和大家一起看看如何通过文件操作符来操作文件。
文件操作主要有以下三个 步骤:
1.打开文件 2.读/写文件 3.关闭文件我称之为文件操作三步曲:打开,操作和关闭。在linux中,这三步曲是借助系统调用实现的。接下来我们介绍与文件操作相关的系统调用。
打开文件的系统调用
int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);(新版本的open)该函数用来打开文件或者创建一个新文件; 该函数的第一个参数是文件名,该文件名表示要打开的文件或者创建的文件; 该函数的第二个参数是打开文件的方式,详见下面的说明; 该函数的第三个参数是创建新文件后,新文件拥有的权限; 该函数运行成功时返回一个文件描述符;运行失败时返回-1,并且设置设置全局变量error。
第二个参数的值可以是以下类型中的任意一个:
o_rdonly(只读的方式打开文件), o_wronly(只写的方式打开文件), o_rdwr(读和写的方式打开文件),另外,该参数的值还可以是 o_append(在文件尾添加数据)和o_creat(创建新文件)。这两个值可以和上面三个值进行或操作,这样对文件进行操作时会包含两个值的意义。例如
open("test",o_wronly | o_creat,s_irwxu )
会创建一个叫test的文件,并且可以对该文件进行写操作。
这里有两个open函数,我们用哪个呢?看官莫急,通常使用第一个open函数来打开文件,如果创建文件时那么就需要使用第二个open函数。这时也会用到第三个参数,该参数的值可以是 s_irusr类型的值,而且这些数据可以进行或操作。比如
s_irwxu | s_irwxg | s_ixoth
操作文件的系统调用
ssize_t read(int fd, void *buf, size_t count);该函数用来从文件中读取数据; 该函数的第一个参数是文件描述符,它会读取与该文件描述符相对应的文件中的数据; 该函数的第二个参数是缓冲区,它会把读取到的数据存放到该缓冲区中; 该函数的第三个参数是每次读取的字节数量; 该函数运行成功时返回读取到的字节数量,如果为0说明已经到了文件末尾。如果运行失败返回-1.并且设置全局变量error
ssize_t write(int fd, const void *buf, size_t count);该函数用来向文件中写入数据; 该函数的第一个参数是文件描述符,它会向与该文件描述符相对应的文件中的写入数据; 该函数的第二个参数是缓冲区,它会把缓冲区中的数据写入到文件中; 该函数的第三个参数是每次写入的字节数量; 该函数运行成功时返回写入到文件中的字节数量,如果为0说明没有写入数据。如果运行失败返回-1.并且设置全局变量error。
关闭文件的系统调用
int close(int fd);该函数用来关闭文件; 该函数的参数表示文件描述符,它会把与该文件描述符相关联的文件关闭掉,或者说释放该文件描述符。 该函数运行成功时返回0,运行失败时返回-1.
各位看官,关于文件操作:基于文件描述符的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。
下一篇: oracle常见数据库和用户
推荐阅读
-
一起talk C栗子吧( 第一百四十回:C语言实例--文件操作:基于文件描述符三)
-
一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)
-
一起talk C栗子吧(第一百三十九回:C语言实例--文件操作:基于文件描述符二)
-
一起talk C栗子吧(第一百三十八回:C语言实例--文件操作:基于文件描述符一)
-
一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)
-
一起talk C栗子吧(第一百四十二回:C语言实例--文件操作:基于文件指针二)
-
一起talk C栗子吧(第一百三十九回:C语言实例--文件操作:基于文件描述符二)
-
一起talk C栗子吧(第一百三十八回:C语言实例--文件操作:基于文件描述符一)
-
一起talk C栗子吧(第一百四十二回:C语言实例--文件操作:基于文件指针二)
-
一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)