第7课-系统调用方式文件编程

一.核心理论:文件描述符
(1)成年公民有身份证编号
(2)打开的文件对应文件描述符。
(3)实质就是一串数字。
(4)作用就是能够区分所有打开的文件。
二.函数学习
man命令默认是按照Linux系统内置手册顺序查找你要搜索的关键词,一旦找到就不继续查找了。相应的顺序是1命令,2系统调用,3库函数。
2.1 打开文件
2.1.1 函数名
Open
2.1.2 函数原形
(1)int open(const char* pathname,int flags);
(2)int open(const char* pathname,int flags.mode_t mode);
2.1.3 函数功能
打开或者创建一个文件
2.1.4 所属头文件
<sys/types.h>
<sys/stat.h>
<fcntl.h>
2.1.5 返回值
成功 返回文件描述符
失败 返回-1
2.1.6 参数说明
Pathname:要打开的文件名(含路径)
Flags:文件打开以后的权限
(1)必须包含以下三者之一
O_RDONLY,O_WRONLY,O_RDWR
(2)可以外加包含以下选项
O_APPEND,O_CREAT
如果使用O_CREAT选项,则必须使用第三个参数mode。默认是不创建不存在的文件的。默认是覆盖之前存在的文件内容的,所以要指明是否以追加方式打开。
Mode:文件待创建文件的访问权限,前提是要在flags参数里面包含了o_creat标志。格式是:文件所有者 + 文件同组用户 + 其他用户。前面多一个0表示粘连位。
2.2 创建文件
2.1.1 函数名
Creat
2.1.2 函数原形
int creat(const char *pathname, mode_t mode);
2.1.3 函数功能
创建一个文件并且以只写的方式打开它。
如果已经存在则不创建。
2.1.4 所属头文件
<sys/types.h>
<sys/stat.h>
<fcntl.h>
2.1.5 返回值
成功 返回文件描述符
失败 返回-1
2.1.6 参数说明
Pathname:创建的文件名(含路径)
Mode:创建的文件爱你的读写权限
2.3 关闭文件
2.3.1 函数名
Close
2.3.2 函数原形
Int close(int fd);
2.3.3 函数功能
关闭一个打开的文件
2.3.4 所属头文件
<unistd.h>
2.3.5 返回值
成功:0
失败:-1
2.3.6 参数说明
Fd:要关闭的文件的文件描述符。
2.4 读文件
2.4.1 函数名
read
2.4.2 函数原形
ssize_t read(int fd, void *buf, size_t count);
2.4.3 函数功能
从打开的文件中读取指定大小的数据到指定的内存位置。
2.4.4 所属头文件
<unistd.h
2.4.5 返回值
成功:返回读取的字节数
失败:返回-1
2.4.6 参数说明
Fd:已经打开且要从该文件读取数据的文件描述符
Buf:存放读取到的数据的起始位置
Count:想要读取的字节数
2.5 写文件
2.5.1 函数名
Write
2.5.2 函数原形
ssize_t write(int fd, const void *buf, size_t count);
2.5.3 函数功能
向已经打开的文件写入预先指定的数据
2.5.4 所属头文件
<unistd.h>
2.5.5 返回值
成功:返回成功写入的字节数
失败:-1
2.5.6 参数说明
Fd:已经打开且要向该文件写入数据的文件描述符
Buf:要写入的数据存放的起始位置
Count:想要写入的字节数
文件操作中有隐形的文件读写指针,打开文件的时候,默认是指向文件头,在写入数据到该打开的文件后,文件读写指针指向了文件尾,当文件还未关闭,就继续读取数据的话,只能读到空数据,因为读和写都是按照文件指针的位置进行的。
2.6 定位文件
2.6.1 函数名
Lseek
2.6.2 函数原形
off_t lseek(int fd, off_t offset, int whence);
2.6.3 函数功能
将文件读写指针移动到指定位置
2.6.4 所属头文件
<sys/types.h>
<unistd.h>
2.6.5 返回值
成功:返回文件读写指针距离文件头的位置(字节数)
失败:-1
2.6.6 参数说明
fd:要移动指针的文件
Offset:移动的距离(字节数)
Whence:决定指针以什么位置为基准开始移动
SEEK_SET:以文件头为基准,此时的offset只能是整数
SEEK_CUR: 以当前位置为基准,此时的offset可正可负,正数往后移动,负数往前移动。
SEEK_END:以文件尾为基准移动,此时的offset之能是负数。
2.7 复制文件描述符
2.7.1 函数名
Dup
2.7.2 函数原形
int dup(int oldfd);
2.7.3 函数功能
复制一个已存在的文件描述符,但是和老描述符指向同一文件。
2.7.4 所属头文件
<unistd.h>
2.7.5 返回值
成功:返回新的文件描述符
失败:-1
2.7.6 参数说明
Oldfd:要复制的老的文件描述符。
三.复制文件实例

posted @ 2015-04-16 19:05  生活需要深度  阅读(147)  评论(0编辑  收藏  举报