the c programing language 学习过程8
glean 捡拾落穗; glean insight 深入了解 modeled模型化 peripheral外围的 himogeneous匀称的 intents 意图 excerpt摘录 intended预期的 underscore下划线 着重强调 collide 碰撞 retrieve取回 coalesced联合 合并
1读写文件前要向系统表示意图 俗称打开文件 系统会检查你的权限 如果OK 就会像程序返回一个非负整数 该整数成为文件描述符 file desriptors
如何时候输入/输出都通过文件描述符 而不是文件名(类似文件指针或者MSDOS的文件句柄)
2解释程序(shell)运行程序时打开三个文件 对应描述符为0 1 2 依次表示 stdin stdout stderr 程序从0读 从1 2写就不用担心打开文件的问题
prog <infile >outfile 重新定向输入输出
int n_read = read(int fd,char *buf,int n); //第一个为文件描述符 第二参数是数据的来源或者去向 第三参数是多少字节 bytes的数据要被传输
~ _written = write ~
每个函数都返回传输的字符数 读来说 返回0则是文件尾 -1 则是错误 写来说 如果有错误 那么实际写入数就会和请求的的数字不相等
3 open类似于fopen 但是返回的是一个文件描述符
int open (char *name,int flags,int perms); //name还是文件名 ,flags有以下几种,perms在这里说的程序都是0
o_rdonly 只读 o_wronly 只写 o_rdwr 读写
如 fd = open(name,o_rdonly,0); 如果打开一个不存在的文件会报错
4 int create(char *name,int perms); fd = creat(name,perms); 如果不能创建文件返回-1 否则返回文件描述符 如果文件已经存在 create会让他清空不会报错
其中perms控制了读写或者接入信息给所有者或者所有群或者其他人
比如0775 表示对所有者读写执行许可 对其他人和团体的读和执行许可
5vprintf对应printf 变长参数变为一个参数
vfprintf 和vsprintf对应fprintf和sprintf
close(int fd) 类似fclose 他是关闭描述符和文件链接(文件数有限制的一般为20)以供其他文件使用 但是不刷新缓存区
如果使用exit返回 所有的文件会被关闭
unlink(char *name)将文件name从文件系统中移除 类似remove
6long lseek(int fd,long offset,int orgin);将文件描述符fd的文件当前位置设置为offset offset是相对于origin的位置而言的
origin可以为0 1 2 分别代表 文件开始 当前位置 文件末尾开始算起
如在文件尾添加内容(unixshell 用重新定向》或者在fopen中用参数a)
lseek(fd,0L,2);
如要在开始处(反绕)
lseek(fd,0L,0); 0L可以写成 (long)0或者0 但是调用的时候会保持一致
之后大题介绍了下几个库里常用函数的 代码 有兴趣的话可以自己多看看
the c programing language 学习过程8的更多相关文章
- the c programing language 学习过程7
interact 互动 carriage运费运输 linefeed 换行 redirection改方向 interleaved交叉存取 adequate足够的 untouched原样的 specif ...
- the c programing language 学习过程6
payroll工资名单 hierarchy分层层次 vexing 使人烦恼的 alignment结盟 semantics 语义 aethetic审美 parameterize 参数化 1结构标记 成员 ...
- the c programing language 学习过程5
lumped 集成总结 mandating托管 consecutively连续地 contiguous临近的 mnemonic记忆力的 mimics 酷似 魔方 bind捆绑 synonym同义词 s ...
- the c programing language 学习过程4
4Functions and Program Structure scratch 刮擦 starting over from scratch从头开始 reside驻留 separately 分别的 f ...
- the c programing language 学习过程3
ControlFlow 控制流 specify 指定 compound statement 复合语句 cryptic有隐含意义的 ambiguity歧义 robust稳健 disintegratio ...
- the c programing language 学习过程2
manipulated 操纵 notations符号 hexadecimal十六进制 precision精度 be concatenated at 把····联系起来 enumerations枚举 ...
- 使用一个数组存储一个英文句子"java is an object oriented programing language"
class fun { public static void main(String[] args) { String str="java is an object oriented pro ...
- The python programing language
Python is an example of high-level language. As you might infer from the name “high-level language”, ...
- Linux下C高手成长过程
建议学习路径: 首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了. 然后看看<C程序设计语言>K&R, ...
随机推荐
- Effective Java 第三版——29. 优先考虑泛型
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Universe Design Tool Using JDBC connect Sybase/Oracle Get Error
一.针对Sybase 1 使用SAP Universe 设计工具连接Sybase数据库报错,报错如下: “CS: Java Class not found in classpath : com.syb ...
- Spring 4.x (二)
1 静态代理 PersonDAO.java package com.xuweiwei.staticproxy; public interface PersonDAO { public void sav ...
- .Net Core部署到CentOS
本文基于初次或再次尝试部署.Net Core应用到Linux服务器上,我尝试后自我总结的经验一个简单的Demo,尝试部署在Linux服务器上和跨服务器访问数据库. 一.环境介绍 1.本地使用Visua ...
- C# TCP 了解
参考:http://www.jb51.net/article/118682.htm 一: TCP 粘包原理:发送方发送若干数据给接收方时粘成一包.从接收缓冲区看,后一包的头紧接前一包的数据的尾. 发送 ...
- 重定向stdin stdout stderr |
在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据 流,也就是题目中所提到的这三个.那么什么是数据流呢(stream)? 我们知道,一个程序要运行,需要有输入.输出,如果出错, ...
- SQL语句-delete语句
delete语句 delete语句用于删除表中已经存在的整行数据 Tbl_name关键词代表删除数据的目标表 Where子句代表被删除数据的满足条件,如果没有where子句则代 表所有表数据都删除 O ...
- web移动端常见问题解决方案 (转)
总结:本文总结了web移动端的常见问题并附上解决方案,包括:Meta标签.获取滚动条的值.禁止选择文本.屏蔽阴影.css之border-box.css3多文本换行.Retina屏幕高清图片.html5 ...
- Func常用模块及API
Func常用模块及API Func提供了非常丰富的功能模块,包括: CommandModule(执行命令) CopyFileModule(拷贝文件) CpuModule(CPU信息) DiskModu ...
- 百度插件webuploader的坑!
前言: 自因为项目中需要使用上传插件,所以之前找了几款上传插件.但是呢,小的上传插件是不支持我们项目上传的(做虚拟机项目的,一个镜像可能好几个G),所以呢这个插件要支持分片上传,拓展性要高(肯定的啦, ...