- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unix期末复习2
这个专题是关于文件读写的操作,基本的有write,open,close,lseek等。
1.open函数
打开文件
#include fcntl.h
int open(const char *pathname, int flag);
int open(const char *pathname, int flag, mode_t mode);//只有新创建文件时才会使用该函数
//返回值,如果成功返回文件描述符,如果出错返回-1
使用open返回的文件描述符作为参数传递给write或read,按照惯例,UNIX中文件描述符0与标准输入相关联,文件描述符1与标准输出相关联,文件描述符2与标准出错输出相关联。依照POSIX标准,0、1、2通常被替换成符号常量STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO(定义在头文件unistd.h中)。文件描述符的范围为0~OPEN_MAX。pathname为文件的绝对路径或相对路径。
flag用于指定文件的打开/创建模式,这3个常量定义在fcntl.h中,这3个参数是必选的,而且只能选择一个:
O_RDONLY ? ? ? 只读模式
O_WRONLY????? 只写模式O_RDWR ? ? ? ? ? 读写模式
下面的常量是可选的:
O_APPEND?????? 每次写操作都写入文件的末尾。
O_CREAT??????? 如果指定文件不存在,则创建这个文件。如果存在则直接打开文件。如果创建新文件,而mode参数没有指定,
则创建的文件权限不定。
O_EXCL ? ? ? 如果文件不存在,则返回错误。如果同时指定了O_CREAT,而文件已经存在,则会出错。 用此测试一个文件
是否存在,如果不存在,则创建此文件。
O_TRUNC??????? 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容。
O_NOCTTY?????? 如果路径名指向终端设备,不要把这个设备用作控制终端。
O_NONBLOCK???? 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式(nonblocking mode)。
下面三个标志也是可选的,他们是Single UNIX Specification中同步输入和输出选项的一部分:
O_DSYNC??????? 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新。?
O_RSYNC??????? read 等待所有写入同一区域的写操作完成后再进行。
O_SYNC???????? 等待物理 I/O 结束后再 write,包括更新文件属性的 I/O。
可选参数可以和必选参数一起使用,并且可以使用多个,如果要以读写方式打开一个文件,如果该文件已经存在,则
将文件清空,如果没有存在,则新创建文件,flag应该为:O_WRONLY | O_CREAT | O_TRUNC
mode用于在创建新文件时指定文件的权限,参数的:
函数2:write与read
将标准输入复制到标准输出
#include apue.h
#define BUFSIZE 10
int main()
{
int n;
char buf[BUFSIZE];
while((n = read(STDIN_FILENO, buf, BUFSIZE)) 0 )
//执行程序时从标准输入读,等待键盘输入
if (write(STDOUT_FILENO, buf, n) != n)//将从键盘中读到的字节写到标准输出
printf(write error\n);
if (n 0)
printf(read error);
exit(0);
}
补充:带缓存与不带缓存
先来看看不带缓存的I/O和标准(带缓存的)I/O都有那些不带缓存的I/O:???????read,write,open......标准(带缓存的)I/O:?fgets,fread,fwrite.....
这里使用两个对应的函数进行比较:ssize_t write(int filedes, const void *buff, size_t nbytes)size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp)
上面的buff和ptr都是指应用程序自己使用的buffer,实际上当需要对文件进行写操作时,都会先写到内核所设的缓冲存储器。如果该缓存未满,则并不将其排入输出队列,直到缓存写满或者内核再次需要重新使用此缓存时才将其排入磁盘I/O输入队列,再进行实际的I/O操作,也就是此时才把数据真正写到磁盘,这种技术叫延迟写。
如果
您可能关注的文档
- php面向对象编程-三大特征.doc
- PTC项建书.doc
- PGP在文件系统中的应用实验报告.doc
- o型密封圈介绍.doc
- Qualoth.docx
- MAAS用户手册.doc
- RC4流密码算法之C语言实现.doc
- QUESTGT27主机描述V4.doc
- RSA非对称密码算法.doc
- RSA课程设计.doc
- 《钢铁工业大气污染物排放标准》编制说明-上海市钢铁工业大.docx
- 【方案】储备人才培养及梯队建设.docx
- 2024年上半年证券行业信用观察——行业总览-新世纪.docx
- 2024年社媒电商大健康行业洞察白皮书-果集行研.docx
- Capgemini-通过可组合银行业务推动金融创新-借助凯捷、IBM和Temenos,释放三者的力量(英)-2024-12页.docx
- 2024H1海外航空行业市场景气度跟踪:航空业景气度持续修复,海外航司经营分化-240910-申万宏源-34页.docx
- 电力及公用事业行业周报(24WK37):绿证与CCER有效衔接,完善绿色转型市场化.docx
- “印太经济框架”进展、内容、前景与影响.docx
- 大模型驱动的具身智能 发展与挑战.docx
- 第十届餐饮创始人大会 -喜家德22年的思考与总结.docx
最近下载
- Siemens西门子电力自动化 变电站自动化 SICAM Anole 用户手册.pdf
- 《导数的概念》教学设计.doc
- 开放系统11379《人文英语(3)》期末机考真题及答案(第102套).pdf
- (康德卷)重庆市高2025届高三第一次联合诊断检 化学试卷(含答案).docx
- 湖北省武汉市江岸区2023-2024学年八年级上学期期末考试英语试题(含答案).docx VIP
- 绘本故事小金鱼逃走了课件PPT.ppt
- 2024年小学古诗词知识竞赛试题及答案(完整版).docx
- 自创--平面镜成像说课市公开课一等奖百校联赛优质课金奖名师赛课获奖课件.ppt VIP
- csm3100无创血流动力检测系统.doc
- 西餐热菜工艺模块3 水产类菜品制作.pptx VIP
文档评论(0)