大多数情况下,我们都会利用Standard I/O Library来进行I/O操作,而这一章所讲的I/O是UNIX系统直接提供的I/O操作,且大多是Unbuffered I/O,即每一次读或写都会出现一次系统调用。

1、打开文件

#include <fcntl.h>

int open(const char *pathname, int oflag, .../* mode_t mode */);

参数oflag有多个选择如O_RDONLY(只读), O_WRONLY(只写), O_RDWR(读写), O_APPEND(每次写都写在文件的最后), O_CREAT(文件不在时创建)......其中前三个必选一个,其余可挑选。多个oflag参数用|分开,如:

open(pathname, O_RDWR | O_CREAT | O_TRUNC, mode);

第三个参数用“...”表示剩下的参数数目和类型可变,事实上只有当文件被创建的时候,参数mode才会有意义,它决定新文件的属性。

2、创建文件

#include <fcntl.h>

int creat(const char *pathname, mode_t mode);

当创建新文件的同时也会把该文件打开,并且以只写的方式打开,等价于:

open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode);

这样当我们要对新文件既读又写的时候,只能依次调用creat,close,open。因此当我们需要对新文件既读又写的时候,常常会用到以下方式代替:

open(pathname, O_RDWR | O_CREAT | O_TRUNC, mode);

3、lseek

每个打开的文件都会有一个当前偏移量来衡量当前处于距离文件开头的哪个位置。

最新文章

  1. ajax实例2
  2. 强联通 HDU 2767 3836
  3. JS中构造函数与函数
  4. 访问 IIS 元数据库失败 的解决方法
  5. 《RedHatLinux逻辑卷的管理》——一条龙服务
  6. ios怎样实现快速将显卡中数据读出压缩成视频在cocos2dx扩展开发中
  7. Windows安装TensorFlow-Docker Installation of TensorFlow on Windows
  8. Unity3DGUI:GUILayout
  9. Android高级控件(三)——&#160;使用Google ZXing实现二维码的扫描和生成相关功能体系
  10. mkdosfs 安装
  11. DUMP3.5 企业级电商项目
  12. Lua table遍历
  13. 本地访问虚拟机redis
  14. 深入理解HashMap和CurrentHashMap
  15. 剑指Offer_编程题_17
  16. Servlet(9)—HttpServlet和改进Servlet实例
  17. 《你不知道的javascript》读书笔记1
  18. string类和stringBuilder类
  19. 11.采集手机端app企查查上司公司数据(未成功)
  20. iOS基础知识之排序

热门文章

  1. Nitrous挂VPN
  2. centos vpn client set
  3. 导入showb时候出错--2015-12-4
  4. “Clean Code” 读书笔记序
  5. Harris 角点检测
  6. Timeout Detection &amp; Recovery (TDR)
  7. OpenCV2.3.1中tbb_debug.dll is missing的解决办法
  8. Getting Started with OWIN and Katana(Console 代替iis 制作 web服务的简单方案)
  9. Tcp/Ip协议族简单解读及网络数据包/报/帧数据格式及封装及解包;
  10. A Tour of Go Exercise: Maps