1、open 函数

(1)头文件:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

(2)原型:

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode)

(3)参数:
1)flag :
必选:O_RDONLY 、O_WRONLY 、O_RDWR 三个必含且只能含其一(彼此互斥)。
可选:O_CREAT(文件不存在,创建文件)、 O_APPEND(原文件后追加内容)、O_TRUNC(原文件清空,再添加内容)、 O_NONBLOCK(设置非阻塞)。
2)mode:八进制的数,用于设置文件权限 ,但并不是创建文件的最终权限。
(4)返回值:
1)成功:返回新的文件描述符。
2)失败:返回 -1,设置 errno。
“通过open创建的文件的权限” 跟 “实际权限” 的关系如代码所示:

int main()
{int fd = open("hello", O_RDWR | O_CREAT, 0777); // 当前目录下打开hello文件if(fd == -1){perror("open fault");}close(fd);return 0;
}
#文件的实际权限是 mode & ~umask:umask 默认 0002,先取反在取与

2、read 函数

(1)头文件:#include <unistd.h>
(2)原型:

size_t read(int fd, void *buf, size_t count); // size_t 无符号整形值

(3)参数:
1)fd 文件描述符。
2) buf 传出参数:缓存区,用于存放读取的数据。
3)count 缓存区能存储的最大字节数 sizeof(buf)。
(4)返回值:ssize_t 类型(本质:有符号整形,意味着可以是负数)
1)失败:返回 -1
2)成功:> 0 读出的字节数 = 0 代表文件读完了。

3、write 函数

(1)头文件:#include <unistd.h>
(2)原型:

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

(3)参数:
1) buf 传入参数:要写入文件的数据。
2) count buf 的实际长度 , 如果先读后写,一般采用 read 的返回值 len。
(3)返回值:
1)失败:返回 -1
2)成功:> 0 写入的字节数。

4、lseek 函数

(1)头文件:

#include <sys/types.h>#include <unistd.h>

(2)原型:

 off_t lseek(int fd, off_t offset, int whence);

(3)参数:
1)whence :设置文件指针的位置 。
2)offset :相对于文件指针位置的向后偏移量。
(4)返回值:文件指针的当前位置(相对于头部的偏移量)
(5)使用:
1)将文件指针移动到头部: lseek(fd, 0, SEEK_SET);
2) 获取文件指针的当前位置: int len = lseek(fd, 0, SEEK_CUR);
3) 获取文件长度: int len = lseek(fd, 0, SEEK_END);
4) 文件的拓展:原大小 100K 拓展为 1100K (拓展的 1000K 都是通过\0 占位):
第一步:lseek(fd, 1000, SEEK_END); //从尾部向后拓展 1000K
第二步:作一次写操作 write(fd, “a”, 1);
注意:文件拓展其实常用函数实现 truncate(fd, length)

5、阻塞和非阻塞

因为文件属性产生了阻塞现象。
普通文件默认非阻塞;管道、fifo、内存映射区、套接字都默认阻塞。
注意:open 时候可以通过 O_NONBLOCK 设置非属性

Linux学习:文件 I/O 函数相关推荐

  1. Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝

    Linux学习-文件IOA1--用结构体和文件操作函数实现文件的拷贝 其实我们不必选用结构体去实现模仿拷贝功能的,但是为了锻炼我们的思维以及对结构体.文件操作函数的使用,所以我们就这样来折腾自己. 学 ...

  2. linux我ll查不到usr,Linux学习-文件查寻

    Linux学习---文件查找 grep, egrep, fgrep  :文本查找 文件查找 locate 全系统查找,非实时,模糊匹配.查找时根据全系统文件数据库进行的. 系统在每天的计划任务时间生成 ...

  3. Linux学习——文件权限及文件查找

    Linux学习--文件权限及文件查找 实验内容 实验目的 实验指导 (未完待续) 实验内容 练习Linux文件权限和文件查找命令. 实验目的 了解文件与目录的默认权限与隐藏权限 掌握如何改变文件属性与 ...

  4. Linux学习----文件授权

    Linux学习----文件授权 Linux基础指令学习 一.简介 Linux授权的指令为chmod(英文全拼change mode),控制用户对文件的权限命令. 文件权限信息示例:-rwxrwxr-x ...

  5. linux读取文件修改时间函数,Linux服务器编程之utime()函数修改文件存取时间

    Linux服务器编程之utime()函数修改文件存取时间 C语言utime()函数:修改文件的存取时间和更改时间 头文件: #include #include 定义函数: int utime(cons ...

  6. linux 学习 文件与目录

    . Linux 系统目录概况 目录的含义解释: /根目录的内容: /usr的内容 /var 的内容: Linux文件基本属性 查看文件的属性及文件所属的用户和组,常常使用ls -l 或者ll Linu ...

  7. Linux学习-文件操作和属性

    1.grep grep过滤相当于一个筛子,可能筛子里面的东西是要保留的,也可能筛出来的是要保留的 grep [选项] 内容 文件: grep root psj.txt表示从psj.txt中找出包含ro ...

  8. linux 查找 文件夹内 函数

    1:我知道是哪个文件内  vim [文件名] :/[函数名]     #n 向下翻 N 向上翻 2:我只知道函数名 不知道在哪 命令行 grep 参数 -r 是递归查找 -n 是显示行号 -R 查找所 ...

  9. Linux学习:目录遍历函数

    (1)打开一个目录 头文件: #include <sys/types.h> #include <dirent.h> 原型: DIR *opendir(const char *n ...

  10. Linux学习:目录操作函数

    (1)文件重命名 #include <stdio.h> int rename(const char *oldpath, const char *newpath); (2)修改当前进程(应用 ...

最新文章

  1. python是什么时候出现的_python什么时候发明的
  2. C语言函数集(十一)
  3. Caused by: org.apache.ibatis.reflection.ReflectionException我碰到的情况,原因不唯一
  4. 如何刪除GitHub中的repository
  5. 大佬把Spring框架总结的「无比详细」,不信你学不会!
  6. 封装各种生成唯一性ID算法的工具类
  7. HTML 5 Canvas 参考手册
  8. 江苏省计算机二级c语言考试知识点,计算机二级考试C语言常考知识点归纳
  9. Linux chapter 1
  10. Oracle EBS-SQL (OM-2):检查OM常用表
  11. 读懂人工智能、机器学习、深度学习、大数据,自然语言处理……
  12. Flask学习笔记之:jinja2变量过滤器以及自定义过滤器
  13. [lua]紫猫lua教程-命令宝典-L1-01-09. string字符串函数库
  14. metricbeat的基本使用
  15. 计算机函数sumif实例,「稻客说函数」SUMIF函数实例详解
  16. 必看!前辈们总结出的程序员找工作遇到的坑
  17. 18100出多少取整_电子表格里小数取整用什么公式?
  18. System.out. 输出到指定文件中
  19. mysql字段掩码_什么叫掩码
  20. 中国移动研究院人工智能中心前端面试题目整理

热门文章

  1. webpack -v 指令报错
  2. 基于深度学习的多目标跟踪:从UMA Tracker出发谈谈SOT类MOT算法
  3. 第二十次CCF计算机软件能力认证总结
  4. 51Nod 1298 圆与三角形相交 计算几何
  5. php基础标签大全,HTML基础之HTML常用标签
  6. 字符串的原样输入输出python_Python字符串输入输出简述
  7. (二):集成日志框架:springboot使用logback日志框架
  8. Go——连接 JFrog Artifactory 简单测试
  9. CTF Geek Challenge——第十一届极客大挑战Misc Write Up
  10. CG CTF WEB 密码重置2