linux中常用文件操作调用系统
来源:互联网 发布:hr绿宝瓶面霜 知乎 编辑:程序博客网 时间:2024/06/09 20:03
1.文件操作
[1].打开
[2].读写 -- 文件的定位
[3].关闭
程序实现方式 两种
[1].库函数 (stdio)
[2].系统调用(文件IO的内容)
stdio:
1.打开 fopen
2.读写
fgetc fputc
fgets fputs ---- 定位 : fseek ftell rewind
fread fwrite
3.关闭
fclose
标准IO的操作对象是:
FILE *fp <---流-->文件
(流指针)
文件iO的操作对象:
文件描述符<-------->文件
文件描述符:
[1].是一个非负的数值(>=0)
[2].文件描述符用来标示一个"已打开的文件"
[3].文件描述符的分配的原则:
最小未使用
[4].系统默认已经打开了三个文件,这个三个文件
stdin stdout stderr
0 1 2
--------------------------------------------
文件IO:
[1].打开 -- open
[2].读写 -- read/write
[3].关闭 -- close
-----------------------------
[1].打开 -- open
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_APPEND //追加模式打开
O_CREAT //文件不存在时,则创建
O_EXCL //与 O_CREAT连用 ,可以实现对已存在文件的探测
O_TRUNC //截短成0
@mode 指定打开的文件的权限(0666) (当 flags中有 O_CREAT 标志时 ,则需要制定这个权限)
返回值:
成功 文件描述符
失败 -1&errno
标准IO 文件IO
-------------------------------------------------
r O_RDONLY
r+ O_RDWR
w O_WRONLY|O_CREAT|O_TRUNC , 0666
w+ O_RDWR |O_CREAT|O_TRUNC , 0666
a O_WRONLY|O_APPEND|O_CREAT, 0666
a+ O_RDWR |O_APPEND|O_CREAT, 0666
注:
linux 中 一切皆文件 思想
[1].操作系统角度
把接入到系统中的设备当做文件对待
[2].编程角度
类似文件的操作流程(a.打开 b.读写 c.关闭)
练习:
使用open函数实现文件创建
类似touch的功能;
之后查看文件的权限
ls -l hello.c
-rw- rw- r-- 1 ubuntu ubuntu 199 Jun 12 20:40 hello.c
4 2 1
r w x ----> 111 (二进制) --> 7(八进制)
读 写 可执行
6(八进制) ---> 110 -->rw 权限
文件掩码(掩码 就是使某些位 有效,某些位无效):
0666 & (~umask)
110 110 110
0002 ---> 111 111 101 &
---------------
110 110 100
6 6 4
[2].读写 -- read/write (数据流向)
ssize_t read (int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
参数:
@fd 文件对应的描述符
@buf 保存数据的内存首地址
@count 表示一次期望操作的字节数
返回值:
成功 表示成功操作到的字节数
失败 -1 & errno
0 读:表示文件末尾
写:表示没有任何数据写入
读写过程中:
定位
lseek(); //off_t ==> long int数值
off_t lseek(int fd, off_t offset, int whence);
参数:
@fd 要定位的文件
@offset 文件偏移量
@whence 相对的偏移起点
SEEK_SET //文件的开头
SEEK_CUR //文件的当前位置
SEEK_END //文件的末尾
返回值:
成功 返回从文件开头到偏移位置的偏移量
失败 -1 &errno
获得文件大小:
long len ;
len = lseek(fd,0,SEEK_END);
同样的,该函数也可以实现空洞文件的创建
创建空洞文件:
lseek(fd,len-1,SEEK_SET);
write(fd,"",1);//这里写入的数据是一个字符'\0'
[3].关闭 -- close
int close(int fd);
练习:
使用 文件io的函数,实现文件拷贝的功能
改进:
将拷贝程序实现成类似迅雷的方式
[1].打开
[2].读写 -- 文件的定位
[3].关闭
程序实现方式 两种
[1].库函数 (stdio)
[2].系统调用(文件IO的内容)
stdio:
1.打开 fopen
2.读写
fgetc fputc
fgets fputs ---- 定位 : fseek ftell rewind
fread fwrite
3.关闭
fclose
标准IO的操作对象是:
FILE *fp <---流-->文件
(流指针)
文件iO的操作对象:
文件描述符<-------->文件
文件描述符:
[1].是一个非负的数值(>=0)
[2].文件描述符用来标示一个"已打开的文件"
[3].文件描述符的分配的原则:
最小未使用
[4].系统默认已经打开了三个文件,这个三个文件
stdin stdout stderr
0 1 2
--------------------------------------------
文件IO:
[1].打开 -- open
[2].读写 -- read/write
[3].关闭 -- close
-----------------------------
[1].打开 -- open
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_APPEND //追加模式打开
O_CREAT //文件不存在时,则创建
O_EXCL //与 O_CREAT连用 ,可以实现对已存在文件的探测
O_TRUNC //截短成0
@mode 指定打开的文件的权限(0666) (当 flags中有 O_CREAT 标志时 ,则需要制定这个权限)
返回值:
成功 文件描述符
失败 -1&errno
标准IO 文件IO
-------------------------------------------------
r O_RDONLY
r+ O_RDWR
w O_WRONLY|O_CREAT|O_TRUNC , 0666
w+ O_RDWR |O_CREAT|O_TRUNC , 0666
a O_WRONLY|O_APPEND|O_CREAT, 0666
a+ O_RDWR |O_APPEND|O_CREAT, 0666
注:
linux 中 一切皆文件 思想
[1].操作系统角度
把接入到系统中的设备当做文件对待
[2].编程角度
类似文件的操作流程(a.打开 b.读写 c.关闭)
练习:
使用open函数实现文件创建
类似touch的功能;
之后查看文件的权限
ls -l hello.c
-rw- rw- r-- 1 ubuntu ubuntu 199 Jun 12 20:40 hello.c
4 2 1
r w x ----> 111 (二进制) --> 7(八进制)
读 写 可执行
6(八进制) ---> 110 -->rw 权限
文件掩码(掩码 就是使某些位 有效,某些位无效):
0666 & (~umask)
110 110 110
0002 ---> 111 111 101 &
---------------
110 110 100
6 6 4
[2].读写 -- read/write (数据流向)
ssize_t read (int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
参数:
@fd 文件对应的描述符
@buf 保存数据的内存首地址
@count 表示一次期望操作的字节数
返回值:
成功 表示成功操作到的字节数
失败 -1 & errno
0 读:表示文件末尾
写:表示没有任何数据写入
读写过程中:
定位
lseek(); //off_t ==> long int数值
off_t lseek(int fd, off_t offset, int whence);
参数:
@fd 要定位的文件
@offset 文件偏移量
@whence 相对的偏移起点
SEEK_SET //文件的开头
SEEK_CUR //文件的当前位置
SEEK_END //文件的末尾
返回值:
成功 返回从文件开头到偏移位置的偏移量
失败 -1 &errno
获得文件大小:
long len ;
len = lseek(fd,0,SEEK_END);
同样的,该函数也可以实现空洞文件的创建
创建空洞文件:
lseek(fd,len-1,SEEK_SET);
write(fd,"",1);//这里写入的数据是一个字符'\0'
[3].关闭 -- close
int close(int fd);
练习:
使用 文件io的函数,实现文件拷贝的功能
改进:
将拷贝程序实现成类似迅雷的方式
0 0
- linux中常用文件操作调用系统
- Linux系统调用 - 文件操作
- Linux 系统调用文件编程(文件操作)
- linux系统调用——文件操作
- Linux 文件操作的系统调用接口
- LINUX系统常用的文件操作命令
- Linux中常用的文件操作
- linux工作中常用文件操作命令
- [GNU/Linux] Linux系统调用-文件操作(一)
- [GNU/Linux] Linux系统调用-文件操作(二)
- UNIX/Linux系统调用_常用头文件
- linux系统调用与文件I/O操作
- linux系统调用与文件I/O操作
- linux系统调用与文件I/O操作
- Linux系统调用和ANSI C文件操作的区别
- 【Linux环境编程入门】四、文件操作的系统调用
- LINUX下通过系统调用的文件操作
- linux常用文件操作
- CM系统刷机至真机
- YUV fullrange
- mybatis+spring搭建工程
- Centos中安装PHP的PDO MySQL扩展
- 数据结构学习-二叉树的基本运算
- linux中常用文件操作调用系统
- 交换机、路由器、网关的概念,并知道各自的用途
- 字典树+数组的前后部分数异或的最大值
- Runge-kutta法原理图示
- 扒一扒那些奇葩的甲方吧
- 【GDOI2014模拟】服务器
- [Android]TextView设置超链接
- 使用PHP实现验证码
- [Android] 获取网络图片并显示