APUE学习心得
APUE学习心得
Chapter 3 IO
3.2 文件描述符
文件描述符是一个非负整数。当打开 一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。0 标准输入,1 标准输出, 2 标准错误
3.3 open函数
1.调用 o p e n函 数 可 以 打 开 或 创 建 一 个 文 件 。
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char* pathname, int oflag,.../*, mode_tmode */);
返回:若成功为文件描述符,若出错为- 1
2.p a t h n a m e是要打开或创建的文件的名字。 o f l a g参 数 可 用 来 说 明 此 函 数 的 多 个 选 择 项 。
• O_RDONLY 只读打开。 • O_WRONLY 只写打开。 • O_RDWR 读、写打开。
在这三个常数中应当只指定一个。下列常数则是可选择的:
O _ A P P E N D 每 次 写 时 都 加 到 文 件 的 尾 端 。 3 . 11 节 将 详 细 说 明 此 选 择 项 。
O _ C R E A T 若此文件不存在则创建它。使用此选择项时,需同时说明第三个参数 m o d e,
用其说明该新文件的存取许可权位。 ( 4 . 5 节将说明文件的许可权位,那时就能了解如何说明 m o d e,以及如何用进程的 u m a s k值修改它。 )
• O _ E X C L 如果同时指定了 O _ C R E AT , 而 文 件 已 经 存 在 , 则 出 错 。 这 可 测 试 一 个 文 件 是 否 存 在 , 如 果 不 存 在 则 创 建 此 文 件 成 为 一 个 原 子 操 作 。 3 . 11 节 将 较 详 细 地 说 明 原 子 操 作 。
• O_TRUNC 如果此文件存在,而且为只读或只写成功打开,则将其长度截短为 0。
• O _ N O C T T Y 如果 p a t h n a m e指的是终端设备,则不将此设备分配作为此进程的控制终端。
9 . 6 节将说明控制终端。
• O _ N O N B L O C K 如果 p a t h n a m e 指的是一个 F I F O 、 一 个 块 特 殊 文 件 或 一 个 字 符 特 殊 文 件 ,
则此选择项为此文件的本次打开操作和后续的 I / O操作设置非阻塞方式。 1 2 . 2 节 将 说 明 此 工 作
方式。
•O _ S Y N C 使每次 w r i t e都等到物理 I / O 操作完成。
3.4 creat函数
也可用 c r e a t 函 数 创 建 一 个 新 文 件 。
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>
i n t c r e a t ( c o n s t c h a r p a t *h n a m e , m o d e _ t m o d e ) ; 返回:若成功为只写打开的文件描述符,若出错为- 1
注意,此函数等效于:
o p e n ( p a t h n a m e , O _ W R O N L |Y O _ C R E A T | O _ T R U N C , m o d e ) ;
3.5 close函数
可用 c l o s e 函 数 关 闭 一 个 打 开 文 件 :
#include <unistd.h>
int close ( int filedes ) ;
FIPS 151-1要求返回出错。
S V R 4 对 传 统 的 系 统 V 文件系统 ( S 5 ) 并 不 保 证 返 回 出 错 ( 见表 2 - 6 ) ,但是对 B S D 风格的文件系统 ( U F S ) ,S V R 4 保证返回出错, 4 . 3 + B S D总是返回出错。
在早期的 U N I X 版本中, o p e n 的 第 二 个 参 数 只 能 是 0 、 1 或 2 。 没 有 办 法 打 开 一 个尚未存在的文件,因此需要另一个系统调用 c r e a t 以创建新文件。现在, o p e n 函 数提供了选择项 O _ C R E A T和O _ T R U N C ,于是也就不再需要 c r e a t 函数了。
返回:若成功为 0,若出错为- 1
3.6 lseek函数
每个打开文件都有一个与其相关联的“当前文件位移量”。它是一个非负整数,用以度量 从文件开始处计算的字节数。 (本节稍后将对“非负”这一修饰词的某些例外进行说明。 )通常, 读、写操作都从当前文件位移量处开始,并使位移量增加所读或写的字节数。按系统默认,当 打开一个文件时,除非指定 O _ A P P E N D选择项,否则该位移量被设置为 0 。
可以调用 l s e e k显 式 地 定 位 一 个 打 开 文 件 。 #include <sys/types.h>
#include <unistd.h>
o f f _ t l s e e k ( i n t f i l e d e s , o f f _ t o f f s e t , i n t w h e n c e ) ;
返回:若成功为新的文件位移,若出错为- 1
若l s e e k 成 功 执 行 , 则 返 回 新 的 文 件 位 移 量 , 为 此 可 以 用 下 列 方 式 确 定 一 个 打 开 文 件 的 当 前
位移量:
off_t currpos;
currpos = lseek(fd, 0, SEEK_CUR);
read函数
用r e a d 函 数 从 打 开 文 件 中 读 数 据 。
#include <unistd.h>
s s i z e _ t r e a d ( i n t f i l e d e s , v o i d *b u f f , s i z e _ t n b y t e s ) ;
返回:读到的字节数,若已到文件尾为 0,若出错为- 1
3.8 write函数
用w r i t e 函 数 向 打 开 文 件 写 数 据 。 #include <unistd.h>
s s i z e _ t w r i t e ( i n t file i l e d e s , c o n s t v o i d b *u f f , s i z e _ t n b y t e s ) ; 返回:若成功为已写的字节数,若出错为- 1
APUE学习心得的更多相关文章
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(七) 查询
我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(八) 插入 更新 删除
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...
- 我的MYSQL学习心得(九) 索引
我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
随机推荐
- Servlet 应用程序事件、监听器
Web容器管理Servlet/JSP相关的生命周期,若对HttpServletRequest对象.HttpSession对象.ServletContxt对象在生成.销毁或相关属性设置发生的时机点有兴趣 ...
- SSM(Maven集成)
ssm全称:Spring+SpringMVC+Mybatis ssm简介: 1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod J ...
- js制作ppt阅读文档类型
前几天开发中,客户要求在页面中展示一个类似ppt文档的一个东西,用轮播展示,但是有缩略图,和展示的大图,本想找些插件来做,后来想想,自己试下吧.. 有些简陋,但是能用,毕竟一行一行写的,留下来当笔记用 ...
- 利用moment为基础,基于DOM实现一个多个倒计时同时进行的js库方便使用
moment非常强大,提供了很多时间方法的封装,项目需要一个小倒计时的功能,网上找了很多不合适,决定自己写一个,直接上代码 //定义一个立即执行的函数(function () { var Ticts= ...
- iOS 图片水印、图片合成文字或图片实现
这个需求可能有时候会碰到,比如自己的照片加版权,打水印等 网上的方法,有不少感觉不全对,或者需求不是特全,这里我总结了3种场景下的需求: 1.本地图片合成文字 2.本地图片合成图片 3.网络图片先下载 ...
- codeforces div2.C
C. New Year and Rating time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- BOM之history对象(转)
前面的话 history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起.由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后 ...
- 西瓜书概念整理(chapter 1-2)
括号表示概念出现的其他页码, 如有兴趣协同整理,请到issue中认领章节 完整版见我的github:ahangchen 觉得还不错的话可以点个star ^_^ 第一章 绪论 Page2: 标记(lab ...
- java byte【】数组与文件读写
此文全文参考http://blog.csdn.net/sniffer_wang/article/details/7455701,自己加以改进应用,谢了 import java.io.ByteArray ...
- IP查询接口1
新浪的:http://counter.sina.com.cn/ip?ip=IP地址返回Js数据,感觉不是很精确,可以把问号后面的去掉,直接返回本机对应的IP所在地http://www.yodao.co ...