2012年02月 存档

APUE 文件I/O 小结

2012年02月24日,星期五

手头有本《Unix环境高级编程 (APUE) 》,就在慢慢看,这两天把文件I/O看了看,现在总结一下。

这一章主要介绍的是非缓冲I/O(unbuffered I/O) ,表示每个read,write操作都进行一次系统调用,他不是标准C的一部分,是POSIX.1single UNIX Specification的一部分。知识点有一下几个部分。

文件描述符:内核向进程返回的一个非负整数,读写文件或进行相关操作的时候用他来标识文件。标准输入0,标准输出1,标准错误输出2分别由符号常量STDIN_FINLENO,STDOUT_FILENO,STDERR_FILENO表示。文件描述符一般选择未用的最小数,不超过OPEN_MAX(大多为63).

open函数:

#include<fcntl.h>

int open( const char * filename, int flag, ../* mode_t */ );

出错时候返回-1,成功返回文件描述符

flag可以是读(O_RDONLY),写(O_WRONLY),读写(O_RDWR),注意着三者不能用|来合并。还有一些可选的常量,比如,O_APPEND表示每次写都添加到文件末尾,O_CREAT创建文件时候要指定第三个参数文件权限,O_TRUNC打开文件时候清空。

lseek函数:

#include<unistd.h>

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

成功时候返回偏移量,否则返回-1,虽然说off_t可以为负值,但是返回的时候的意义是相对于文件文件开头(SEEK_SET)的。

whence有三种(SEEK_SET, SEEK_CUR,SEEK_END),分别是相对于文件开始,当前偏移量,和文件结尾。当用lseek确定好要操作的文件位置之后,就能在返回的偏移位置上进行读写了。如果文件描述的是一个管道,FIFO或者网络套接字,则lseek返回-1,并将errno设置为ESPIPE。
(更多…)

寒假已去,说说近来

2012年02月20日,星期一

寒假在家,木有网,不过是看了不少书。自从区预赛回来,就没有再看过算法没再刷过题,重心转移到了学习其他的知识上面了。

有很多人问我是考研,保研,还是工作,我一般的回答都还是不知道,有时候也是敷衍下。其实我心里是也没有咬定是哪个方向。一步一步走着看,这学期可以试试申请腾讯百度等的暑期实习项目,如果申请上了,那么必将会有很大的收获,也可能会有拿转正offer的机会,如果申请不上,我可以用暑假的时间准备考研(同时也可以学学其他的东西)。对于保研,貌似有那么一点点希望,到九月排名有了再说。校园招聘什么的也是会去试试的,成与败就又是一番景象了。前途未卜,不如着眼今朝。

寒假之前给自己制定了一个计划,两件事:1.粗略看完《C++ Primer(第四版)》,将以前不熟悉的名词术语搞清楚,对c++的知识构架有一个清晰的了解。2.看完《linux程序设计(第四版)》,对linux编程的知识结构也要建立清晰的认识。现在看来也算是完成了吧,满意度80%。我这样做就是对自己将要深入的知识做了个简单的哈希,方便以后深入学习时候查找,另一方面这样也减少了我的畏惧感(比如碰到函数fork,以前的话我不认识它我可能很担心,“我怎么还有这么多不会”,现在的话,我会想,“这个我见过,在进程控制那一部分,我将会在两周后学习到它”等等。。。恩)。当然,好奇心也是我的一个强大的驱动力。我的学习内容主要是3个方面:linux(使用及系统编程),c++,算法。为此制定了一下的新学期的几个任务:

1、重读C++Primer。把课后习题都敲敲。(两年前的今天,我坐在市里的图书馆,落地窗旁,左一本谭浩强的C,右一个笔记本,把课后习题都写了一遍,花了不到一个月,学了C。不知道现在看C++,能否有当初的心劲儿。)

2、完成一次LFS的建立。来学校前打印了文档,现在已经进行到第六章,也是比较重要的一章。目前还没有什么问题。目测将会学到不少东西,完成后来个总结,有兴趣的同学可以Q我,相互交流下。至于BLFS,CLFS等等能不能进行,到时候再说。

3、读懂 Boa的源码,boa是个简单的Http server,源码大概1万行(?),不会造成太大的心里压力。不能总是看函数,记记API吧,看一些实际的东西,应该启发更大些。重点应该是网络编程,进程通信什么的吧。

4、《数据结构与算法分析–C++描述》看了又一半了,看CP的时候利用所学的知识。把学到的数据结构,算法认真的实现一遍,自己尽量设计。我也会在这个blog上放出代码,路过的大牛如果愿意指出错误或者不合理,感激不尽~

就这些吧,不再加了。看看不是很重,但是也不轻。@小媛在努力,共勉啦~

明天就要上课了,突然发现我们教室几乎全部都在北教学区,这样就可以顺理成章的跟妹子去菊园吃饭了,也顺理成章晚上上上自习什么的,ds在学校的时间也就剩100天左右了,尽量多花时间陪陪她 (*^__^*) 嘻嘻……

早上又要起不来了。。。睡了~