Linux_3.3_系统调用方式文件编程

文件编程



1 文件描述符

      在linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,

我们称之为:文件描述符

更多有关文件描述符


2 函数学习

    函数学习方法

   

对man的使用请点击下方:

man命令使用方法 


2.1打开文件

2.1.1 函数名

open

2.1.2 函数原形

int open(const char *pathname,int flags)

int open(const char *pathname,int flags,mode_tmode)

2.1.3 函数功能

打开或者创建一个文件

2.1.4 所属头文件

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

2.1.5 返回值

成功:文件描述符   失败:-1

2.1.6 参数说明

pathname:要打开的文件名(含路径)

flags:文件打开的标志.

-O_APPEND:以追加的方式打开文件

-O_CREAT:当打开的文件不存在的时候,创建该文件

mode:一定是在flags中使用了O_CREAT标志,mode记录特定创建的访问权限.



2.2创建文件

2.1.1 函数名

creat

2.1.2 函数原形

int creat(const char *pathname,mode_t mode)

2.1.3 函数功能

创建一个文件,并以只写的方式打开该文件

2.1.4 所属头文件

#include<sys/types.h>

#include<sys/stat.h>

#include<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 所属头文件

#include<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 所属头文件

#include<unistd.h>

2.4.5 返回值

成功: 返回读取了多少字节数  失败:-1

2.4.6 参数说明

fd:要读取数据的文件的描述符

count:要读取的字节数

buf:读取来的数据存到buf指向的空间


2.5写文件

2.5.1 函数名

write

2.5.2 函数原形

ssize_t write(int fd, void *buf,size_t count);

2.5.3 函数功能

向一个打开的文件写入数据

2.5.4 所属头文件

#include<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 所属头文件

#include <sys/types.h>

#include <unistd.h>

2.6.5 返回值

成功: 返回距文件头的偏移量

失败: 返回-1

2.6.6 参数说明

fd: 要定位文件的描述符

offset:偏移量

whence:

 1.如果 whence SEEK_SET ,文件偏移量将被设置为 offset。
 2.
如果 whence 是 SEEK_CUR ,文件偏移量将被设置为 cfo 加上 offset,
       offset
可以为正也可以为负。

      offset为负时,偏移量从当前位置向开头方向移动offset位

      offset为正时,偏移量从当前位置向结尾方向移动offset位:

 3. 如果 whence 是 SEEK_END ,文件偏移量将被设置为文件长度加上 offset,
   
  offset可以为正也可以为负。

        offset为负时,偏移量从结尾位置向开头方向移动offset位

     offset为正时,偏移量从结尾位置向结尾方向移动offset位



2.7复制文件描述符

2.7.1 函数名

dup

2.7.2 函数原形

int dup(int oldfd)

2.7.3 函数功能

复制一个文件描述符

2.7.4 所属头文件

#include<unistd.h>

2.7.5 返回值

成功:返回新的文件描述符

失败:返回-1

2.7.6 参数说明

oldfd:待复制的老的文件描述符


3 实现文件复制功能

步骤:

 ①打开源文件

 ②打开目标文件

 ③读取源文件

 ④将数据写入目标文件


程序如下:



编译后执行copy命令进行测试

./mycopy s.txt ./t.txt



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值